3

こんにちは、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日間取り組んできましたが、解決策が見つかりません!

4

2 に答える 2

3

自分の犯した間違いに気づきました!.

phonegap config.xmlに追加されたアクセス元のアクセス許可で、私は入れていました:

<access origin="*"/>

それは正しくありません!アスタリスク ('*') の前にドット ('.') を付けるのが正しい方法です:

<access origin=".*"/>

それだけです!、問題は解決しました! .

于 2013-09-24T18:49:46.430 に答える
1

Web サービスを[System.Web.Script.Services.ScriptService]で修飾して、javascript クライアントで使用できるようにする必要がある場合があります。

例:

[WebService(Namespace = "http://tempuri.org/&quot;)]  
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
[System.Web.Script.Services.ScriptService]  
public class dummyWebservice : System.Web.Services.WebService  
{  
[WebMethod()]  
public string HelloToYou(string name)  
{  
return "Hello " + name;  
}  
[WebMethod()]  
public string sayHello()  
{  
return "hello ";  
}    
} 

ソースと追加情報/例: http://vincenthomedev.wordpress.com/2009/02/10/using-an-aspnet-web-service-or-page-method-using-jquery/

于 2013-09-19T21:13:31.650 に答える