3

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

它只发生在中东国家。一位来自阿拉伯联合酋长国的用户证实了我向其发送了一个临时构建进行测试的问题。应用程序返回 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];
....
4

1 回答 1

0

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

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

我认为正在为 Accept-Encoding 标头设置无效值。更常用的值是“compress, gzip”,您不需要自己设置它。如果您希望服务器返回文本/xml,则应将其放入“接受”标头中 - 尽管您可能根本不需要它,具体取决于服务器设置。

在 GET 请求上使用 Content-Type 标头也很不寻常,您添加它是否有原因?

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

于 2011-04-29T17:52:13.657 回答