こんにちは、phonegap-android アプリから ASP.NET で記述された Web サービスを使用しようとしていますが、どこかで間違いを犯しているようです。
これは、Eclipse の Android エミュレーターで実行すると失敗することに注意してください。私はすでに Web ブラウザーから同じコードを試しましたが、問題なく動作します。
質問に関連するIndex.htmlの部分は次のとおりです
/* Here i declare 'webServiceURL' which holds the path to the service that's
hosted at 10.0.0.174 (WLAN ip of my computer). I use this instead of 127.0.0.1
because on a mobile phone localhost points to the phone itself. */
// Here i declare 'datos' which are the parameters sent to the web service method
$.ajax({
url: webServiceURL + "InicioSesion",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(datos),
dataType: 'json',
beforeSend: function() {$.mobile.loading('show')},
complete: function() {$.mobile.loading('hide')},
success: function (data, textStatus, jqXHR) {
// Here i do stuff with 'data'
},
error: function (jqXHR, textStatus, errorThrown) {
// Here i print errors
},
)};
phonegap config.xmlにアクセス元権限を追加
<access origin="*"/>
ASP.NET Web サービスのweb.configへの変更
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
私が直面しているエラーは、「dataType」を「json」に設定すると(これは私が期待しているものです)、ajaxリクエストが失敗し、「textStatus」を印刷すると ParserERROR が返されることです。
そこで、「json」ではなく「text」として「dataType」を使用して、Web サービスの応答に問題があるかどうかを調べてみたところ、応答が NULL であることが問題であることがわかりました。
私が言及したことを思い出してください。このコードは Web ブラウザーで完全に機能しますが、Android エミュレーターから実行されている phonegap アプリでは失敗します。
phonegap を使用して ASP.NET Web サービスを利用した経験のある方がいらっしゃいましたら、ぜひお助けください。何が欠けているのか、間違っているのかわかりません!. 私はこれに2日間取り組んできましたが、解決策が見つかりません!