我有一个奇怪的问题,我正在处理一个我要从服务器请求的项目,当使用URL
方法请求没有参数的GET
时,它工作正常并返回所需的数据,但是当使用相同的代码调用URL
并向其发送参数时,它会因此错误而失败:
error: Error Domain=NSURLErrorDomain Code=-1001 UserInfo=0xed4870 "timed out"
我的代码如下:
NSString *param = @"pageNumber=2";
NSURL *url = [NSURL URLWithString:@"http://myWebsite/api/Soccor/"];//When using this, it works fine
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myWebsite/api/Soccor?%@", param]];//When using this, it gives me the request time out error.
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
[theRequest addValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"GET"];
[theRequest setTimeoutInterval:10];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
使用URL
发送参数时,为什么会返回错误的任何线索?
答案 0 :(得分:1)
我建议您考虑请求的两个方面:
您没有向我们展示您msgLength
的设置,但如果您还使用Content-Length
,我建议您设置一个setHTTPBody
标题,在这种情况下,您可以d将Content-Length
设置为您用作length
参数的NSData
的{{1}}。但这与setHTTPBody
次请求一起使用,而不是POST
次请求。
您为请求的GET
指定application/json
,但请求不包含JSON。如果你这样做是因为响应是JSON,那么应该注意这个标题值是针对你的请求的,而不是你期望从服务器得到的响应。