中东国家的http状态代码400

时间:2011-04-28 13:40:46

标签: iphone asihttprequest http-status-codes http-status-code-400

我有一个iPad应用程序可以在UIWebView上从服务器上加载一个plist,但是当我尝试从服务器获取它作为响应字符串时,它会返回一个http状态代码400,其响应字符串为Request Error(invalid_request)。

它只发生在中东国家。来自阿拉伯联合酋长国的一位用户确认了我发送过adhoc版本进行测试的问题。 App返回状态代码400,但plist在UIWebView上加载正常。

我一直在尝试使用2台不同的服务器 - AWS服务器和另一台托管在美国的服务器。对于这两个服务器,它提供相同的状态代码。

任何人都可以提出为什么会发生这种情况的建议吗?

以下是代码的一部分:

  .....
    ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
    [request addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"];
    [request addRequestHeader:@"Accept-Encoding" value:@"text/xml;charset=utf-8"];

    [request setRequestMethod:@"GET"];
    [request setDelegate:self];

    [request setDidFinishSelector: @selector(gotTheResponse:)];

    [request setDidFailSelector: @selector(requestFailed:)];
    [networkQueue addOperation: request];
    [networkQueue go];
....

1 个答案:

答案 0 :(得分:0)

我不确定这是不是问题,但这一行:

[request addRequestHeader:@"Accept-Encoding" value:@"text/xml;charset=utf-8"];

为我认为的Accept-Encoding标头设置了无效值。更常见的值是“compress,gzip”,你不应该真的需要自己设置它。如果你想要服务器返回的text / xml,它应该进入“Accept”标题 - 尽管根据服务器设置你可能根本不需要它。

在GET请求中使用Content-Type标头也很不寻常,你有没有理由添加它?

最后一种可能性是,如果URL包含异常字符,可能会导致任何代理服务器返回错误。