Ajax / Header不匹配?

时间:2012-06-02 06:05:11

标签: javascript android cordova android-webview

我希望有人能为我回答这个问题,我不是服务器专家所以请原谅我,如果我完全偏离基地。

我使用Android webview(PhoneGap 1.4.1)进行Ajax调用,但每次调用时我都会保持状态为4状态。我花了最后几个小时调查这个,我可能已经弄明白了为什么。我使用xhaus.com/headers检查我的请求,发现在网页浏览中我的接受"接受"标题是:

text / xml,text / html,application / xhtml + xml,image / png,text / plain, / ; q = 0.8

然而,如果我拉起Android浏览器并以这种方式检查我的标题,我会看到我的"接受"标题是:

application / xml,application / xhtml + xml,text / html; q = 0.9,text / plain; q = 0.8,image / png, / ; q = 0.5

我检查了提供XML的服务器,发现返回头是" Content-Type"设置为:

应用/ XML

我的第一个问题是:Webview似乎不支持" application / xml"类型,这可能是我遇到问题的原因吗?或者我完全不在这里?

第二个问题:我在客户端可以做些什么来解决这个问题,或者服务器管理员是否需要进行更改?我正在使用GET来提出请求。

第三个问题:这是正常的吗?为什么网页浏览/浏览器会出现这种不匹配?

我的应用程序已在10多款手机上测试过,只有2款有此问题......非常奇怪。

谢谢,

1 个答案:

答案 0 :(得分:0)

我可能错了,但听起来你正在打电话给网络服务?某些服务支持多个调用策略,具体取决于您传递的内容类型标头。

例如,SharePoint Web服务既支持SOAP 1.0(如果Content-type发送为“text / xml; charset = utf-8”),也支持SOAP 1.2(如果Content-type设置为“application / soap + xml”) )。

在你的情况下,我会尝试设置内容类型“text / xml; charset = utf-8”,看看会发生什么。

对于“accept”标头,如果服务器响应根据传递的值不可接受,则应该传递状态406(不可接受)。它可能只是服务器中的一个错误或者它之间的任何步骤。使用像Fiddler这样的工具,您应该能够重新创建两个请求(两个“接受”的变体)并确切地看到服务器响应的内容 - 这可能是真正了解事物的最简单方法。