【问题标题】:NSURLRequest the request time outNSURLRequest 请求超时
【发布时间】:2013-09-25 07:03:16
【问题描述】:

我有一个奇怪的问题,我正在处理一个我必须从服务器请求的项目,当使用 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];

知道为什么它在使用URL 发送参数时返回错误吗?

【问题讨论】:

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

标签: objective-c json nsurlconnection nsurlrequest request-timed-out


【解决方案1】:

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

    1234563成为您用作setHTTPBody 的参数的NSDatalength。但这是用于POST 请求,而不是GET 请求。
  1. 您为请求的Content-Type 指定application/json,但请求不包含JSON。如果您这样做是因为响应是 JSON,则应注意此标头值是针对您的请求,而不是针对您期望从服务器获得的响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2012-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多