我有一个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];
....
答案 0 :(得分:0)
我不确定这是不是问题,但这一行:
[request addRequestHeader:@"Accept-Encoding" value:@"text/xml;charset=utf-8"];
为我认为的Accept-Encoding标头设置了无效值。更常见的值是“compress,gzip”,你不应该真的需要自己设置它。如果你想要服务器返回的text / xml,它应该进入“Accept”标题 - 尽管根据服务器设置你可能根本不需要它。
在GET请求中使用Content-Type标头也很不寻常,你有没有理由添加它?
最后一种可能性是,如果URL包含异常字符,可能会导致任何代理服务器返回错误。