2

誰かがこの質問に答えてくれることを願っています。私はサーバーの専門家ではないので、完全に的外れである場合はご容赦ください。

Android webview (PhoneGap 1.4.1) を使用して Ajax 呼び出しを行っていますが、各呼び出しで準備完了状態 4 ステータス 0 を取得し続けています。私はこれを調査するために過去数時間を費やしましたが、その理由を理解したかもしれません. xhaus.com/headers を使用してリクエストを確認したところ、Web ビューで「Accept」ヘッダーが次のようになっていることがわかりました。

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

ただし、Android ブラウザーを起動してヘッダーを確認すると、"Accept" ヘッダーが次のようになっていることがわかります。

アプリケーション/xml、アプリケーション/xhtml+xml、テキスト/html;q=0.9、テキスト/プレーン;q=0.8、画像/png、/;q=0.5

XML を提供しているサーバーを確認したところ、リターン ヘッドは「Content-Type」が次のように設定されていることがわかりました。

アプリケーション/xml

私の最初の質問は次のとおりです。Webview は「application/xml」タイプをサポートしていないようですが、これが問題の原因でしょうか? それとも私はここで完全に基地から外れていますか?

2 番目の質問: これを修正するためにクライアント側でできることはありますか、それともサーバー管理者が変更を加える必要がありますか? GET を使用してリクエストを作成しています。

3 番目の質問: これは正常ですか? なぜWebビュー/ブラウザにはこの種の不一致があるのでしょうか?

私のアプリは 10 台以上のハンドセットでテストされていますが、この問題が発生するのは 2 台だけです...非常に奇妙です。

ありがとうございました、

4

1 に答える 1

0

私は間違っているかもしれませんが、あなたはWebサービスを呼び出しているように聞こえますか?一部のサービスは、渡すcontent-typeヘッダーに応じて複数の呼び出し戦略をサポートします。

たとえば、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のようなツールを使用すると、両方のリクエスト(両方とも「accept」のバリエーション)を再作成し、サーバーの応答を正確に確認できるはずです。これが、物事の根底にある最も簡単な方法かもしれません。

于 2012-09-14T04:28:59.553 に答える