jQuery mobile と Phonegap (現 Cordova) で iPhone/Android アプリを開発しました。このアプリは問題なくさまざまなサービスを使用しています。このサービスの 1 つは Soap であるため、サービスを要求するために jQuery に jsSOAPClient (jquery.jqSOAPClient.js) を使用します。iOS デバイスからはまったく問題ありませんが、Android ではクエリが常に失敗します。
jsSOAPClient では、リクエストは次のようになります。
function getResponse(xData, status) {
if(!!callback) {
SOAPClient.Status = xData.status;
SOAPClient.ResponseText = xData.responseText;
SOAPClient.ResponseXML = xData.responseXML;
callback(xData.responseXML);
}
}
$.ajax({
type: "POST",
url: SOAPClient.Proxy,
dataType: "xml",
processData: false,
data: content,
complete: getResponse,
beforeSend: function(req) {
req.setRequestHeader("Method", "POST");
req.setRequestHeader("Content-Length", SOAPClient.ContentLength);
req.setRequestHeader("Content-Type", SOAPClient.ContentType + "; charset=\"" + SOAPClient.CharSet + "\"");
req.setRequestHeader("SOAPServer", SOAPClient.SOAPServer);
req.setRequestHeader("SOAPAction", soapReq.Action);
}
});
「getResponse」「status」の値は「error」で、「SOAPClient.Status」(「xData.status」と同じ)の値は「0」です。
サーバーはリクエストをまったく受信していないようです...
同じリクエスト データを使用した同じコードが iOS で結果を返すことを繰り返します。
手伝ってくれてありがとう。
/編集* / 次の行にコメントを付けてみました:
//type: "POST",
予期しない応答形式が原因で解析エラーが発生した場合でも、この場合は 200 ステータス コードがあることを意味します。