2

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

我正在使用 Android webview (PhoneGap 1.4.1) 进行 Ajax 调用,但我在每次调用时都保持就绪状态 4 状态 0。在过去的几个小时里,我已经对此进行了调查,我可能已经弄清楚了原因。我使用 xhaus.com/headers 检查我的请求,发现在 web 视图中我的“接受”标题是:

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 部出现了这个问题……很奇怪。

谢谢,

4

1 回答 1

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”的内容类型,看看会发生什么。

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

于 2012-09-14T04:28:59.553 回答