Objective c NSURLRequest请求超时

Objective c NSURLRequest请求超时,objective-c,json,nsurlconnection,nsurlrequest,request-timed-out,Objective C,Json,Nsurlconnection,Nsurlrequest,Request Timed Out,我有一个奇怪的问题,我正在处理一个需要从服务器请求的项目,当使用GET方法请求一个没有参数的URL时,它可以正常工作并返回所需的数据,但是当使用相同的代码调用URL并向其发送参数时,它失败,出现以下错误: error: Error Domain=NSURLErrorDomain Code=-1001 UserInfo=0xed4870 "timed out" 我的代码如下: NSString *param = @"pageNumber=2"; NSURL *url = [NSURL URLW

我有一个奇怪的问题,我正在处理一个需要从服务器请求的项目,当使用
GET
方法请求一个没有参数的
URL
时,它可以正常工作并返回所需的数据,但是当使用相同的代码调用
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];

<> p>为什么在用<代码> URL < /代码>发送参数时返回错误?

< p>我建议您考虑请求的两个方面:

  • 您没有向我们显示您的
    msgLength
    设置,但如果您同时使用
    setHTTPBody
    ,我只建议设置
    Content Length
    标题,在这种情况下,您可以将
    内容长度
    设置为
    NSData
    长度
    ,作为
    setHTTPBody
    的参数。但这用于
    POST
    请求,而不是
    GET
    请求

  • 您可以为请求的
    内容类型
    指定
    application/json
    ,但请求不包含json。如果您这样做是因为响应是JSON,那么应该注意,这个头值是针对您的请求的,而不是针对您期望从服务器得到的响应的


  • 我建议你考虑一下这个请求的两个方面:

  • 您没有向我们显示您的
    msgLength
    设置,但如果您同时使用
    setHTTPBody
    ,我只建议设置
    Content Length
    标题,在这种情况下,您可以将
    内容长度
    设置为
    NSData
    长度
    ,作为
    setHTTPBody
    的参数。但这用于
    POST
    请求,而不是
    GET
    请求

  • 您可以为请求的
    内容类型
    指定
    application/json
    ,但请求不包含json。如果您这样做是因为响应是JSON,那么应该注意,这个头值是针对您的请求的,而不是针对您期望从服务器得到的响应的


  • 在传递参数时检查url格式后,您可能需要为该参数值提供任何键。@kalyanipuvvada您能解释一下吗!?你的评论我不清楚。@Rob我已经在浏览器中测试了URL,它工作正常,这是最奇怪的部分。关于你在标题上的观点,为什么它与第一个URL一起工作,而第二个不工作@Rob看起来你是对的,问题是
    内容长度
    ,当我删除它时,它工作正常。请回答这个问题,这样我就接受了。但是这个错误是怎么出现的,如果你有任何解释的话,请告诉我。@Scar关于它为什么会像你发送一个格式错误的请求时那样准确地运行,我不知道。我怀疑这取决于您将
    msgLength
    设置为什么(您从未向我们展示过这一点)以及服务器的配置方式(如果看到不同的服务器对这些错误条件的响应不同,我不会感到惊讶)。在传递参数时检查url格式后,您可能需要为该参数值提供任何键。@kalyanipuvvada您能解释一下吗!?你的评论我不清楚。@Rob我已经在浏览器中测试了URL,它工作正常,这是最奇怪的部分。关于你在标题上的观点,为什么它与第一个URL一起工作,而第二个不工作@Rob看起来你是对的,问题是
    内容长度
    ,当我删除它时,它工作正常。请回答这个问题,这样我就接受了。但是这个错误是怎么出现的,如果你有任何解释的话,请告诉我。@Scar关于它为什么会像你发送一个格式错误的请求时那样准确地运行,我不知道。我怀疑这取决于您将
    msgLength
    设置为什么(您从未向我们展示过这一点)以及服务器的配置方式(如果看到不同的服务器对这些错误条件的响应不同,我不会感到惊讶)。