【发布时间】:2013-12-18 18:09:00
【问题描述】:
我正在尝试在 NSMutableURLRequest 中为 GET 请求加载 URL,如下所示:
NSString *serverAddress = [NSString stringWithFormat:@"http://test.us.to:8080/api/offers?altId=%@&provider=%@&otherId=%@&tenantId=%@&createdAt=%@&otherOfferId=%@&postId=%@&pageId=%@&sourceUrl=%@&name=%@&description=%@&text=%@&category=%@&caption=%@&startTime=%@&expirationTime=%@&minPurchase=%@&numPurchases=%@&value=%@&percent=%@&count=%@¤cy=%@&terms=%@&campaignId=%@&partnerId=%@&tenantIdAtPartner=%@&issuerName=%@&claimLimit=%@&onePerUser=%@&emailTemplateFile=%@",@"test",@"Facebook",@"",@"test",@"null",@"test",@"",@"",@"http://test.us.to/offers/harvester_summer13.html",@"Harvester",@"Harvester 2for1 TakeAway",@"Enjoy!",@"voucher",@"Harvester 2for1 TakeAway",[NSNumber numberWithInt:0],@"test",[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],@"1000",[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],@"GBP",@"",[NSNumber numberWithInt:1259],@"null" ,@"null" ,@"null",[NSNumber numberWithInt:100],[NSNumber numberWithBool:false],@"templates/test.vm"];
NSURL *url = [NSURL URLWithString:[serverAddress urlEncodeUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:15.0];
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"testuser", @"testpwd"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
[request setHTTPMethod: @"GET"];
NSError *requestError;
NSURLResponse *urlResponse = nil;
NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
NSLog(@"输出数据%@",response1);
我想我使用 url 字符串加载了太多参数。有没有更好的方法来为 GET 请求传递参数? response1 的当前输出为空
【问题讨论】:
-
你怎么知道你的参数太多了?
-
GET 请求没有限制吗? 256 个字符?
-
看起来您正在对整个 serverAddress 字符串进行编码。你不应该只是在url地址后面编码参数吗?
-
没有具体限制。这取决于 Web 服务器和操作系统。我很确定 Mobile Safari 可以处理超过 2500 个字符的 URL。
-
与其重新发明轮子,不如看看 AFNetworking 中高度完善的方法:github.com/AFNetworking/AFNetworking/blob/master/AFNetworking/… - 请参阅
AFQueryStringFromParametersWithEncoding。