1

まず、スタックオーバーフローについてここにいるすべての専門家に感謝します。質問を読み、サンプルコードを見て、この時点までに到達できた回答を読みます。もう一度ありがとう!

私は解決策を探すのに何時間も費やしてきました、私はこの問題に関する多くの投稿を読みました。これは他の多くの人が苦労している/これまで苦労してきた問題のようです。誰かがこの苛立たしい問題を手伝ってくれるなら、これ以上のアドバイスやヒントをいただければ幸いです。

私の開発はすべてローカルマシンで行われます。(Win 7、Visual Studio 11beta)

WCFサービスは、IISExpressの独自のポートまたはIIS7.5(.Net Framework 4.0)でホストされます。

Html5 / jQueryのみを使用する2番目のWebアプリケーションは、IISExpressの別のポートでホストされています。

ローカルマシンでもAndroidSDK17でEclipse3.7.2を使用しています。すべてのソフトウェアが正しく機能しているようです。Android Emulatorが機能している、Phonegap/Cordovaライブラリがインストールされているなど。Cordova1.6.0でAndroid4.0.3を使用しています。

phonegapエミュレーターのajax呼び出しがWCFRESTサービスに到達しない理由を調べるために支援を求めています。現在、プログラムをテストするための実際のAndroidデバイスがないため、エミュレーターを使用する必要があります。

詳細:

JSONとJSON-Pで送受信する.Netで開発されたWCFRESTサービスがあります。

クロスドメイン呼び出しが許可されていることを確認するために、別のポートで2番目のWebアプリケーションを使用してこれをテストしました。

Firefox用のRESTclientプラグインも使用しており、これを使用してJSONおよびJSON-P呼び出しを正常に行うことができます。[ http://restclient.net/ ]したがって、WCFサービスは正常に機能していると確信しています。クロスドメインの問題はないはずです。

Visual Studio内で機能していることがわかっているjQueryを使用してHtmlファイルを取得し、Eclipseを実行してphonegapアプリにコピーすると、WCFサーバーに基本的な呼び出しを行おうとしますが、サーバーに接続できません。

Androidのドキュメントに従って、URLを[http:// localhost:50425 / LoginService.svc / GetData]から[http://10.0.2.2:50425/LoginService.svc/GetData]に変更しました:[http://developer .android.com / guide / development / devices / emulator.html#networkaddresses]

次の設定ですべて許可ホワイトリストを作成しました。

[access origin = "*"]

cordova.xmlファイル内。参照:[http://professionalaspnet.com/archive/2012/05/15/Whitelisting-Domains-in-Cordova-_2800_PhoneGap_2900_-Android.aspx]

[http://docs.phonegap.com/en/1.8.1/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android]に従って、AndroidManifest.xmlファイル内に正しい権限が設定されています

通話を開始するときは、$。ajaxSetupエラー関数を使用してネットワークエラーなどをトラップし、エラーメッセージをアラートとともに表示します。console.log()を使用して、この関数がエラーなしで渡されることを確認しました。

呼び出しが実際に発生すると、「不正な要求-無効なホスト名。HTTP400。要求のホスト名が無効です。」を受け取ります。

呼び出しが成功した場合は、Visual Studio内のブレークポイントを使用して、呼び出しが行われたことを確認し、要求が通過することを確認します。

「外部」ホストにアクセスできるかどうかをエミュレータからテストする他の方法はありますか?この場合、エミュレータが実際にサービスを見つけられることを確認するには?実行する必要のあるツールやその他の構成設定はありますか?

エミュレーターを削除して新しいエミュレーターを作成しましたが、それでもWCFサービスに接続できません。

これを実際に機能させたい、完全なphonegapアプリケーションを構築したいのですが、Webサービスに電話をかけられない場合は続行できません。

アドバイスをいただければ幸いです。

4

1 に答える 1

0

PhoneGapは、実際にはhtml / css / js Webページのラッパーであり、複数のネイティブモバイルプラットフォームアプリにコンパイルできる電話固有の機能にアクセスするためのjsライブラリを備えています。

したがって、これは実際にはPhoneGapの問題ではありません...

通常のブラウザウィンドウでリクエストを実行するhtmlファイルを開くことができ、すべてが正常に機能する場合は、JQueryを使用してWebサービスをクエリしていると言います。問題はコードにあるのではなく、使用しているエミュレーターにあるので、構成IDKが間違っている可能性があります。

それでも失敗する場合は、IISインスタンスが間違っている/ないことを示している可能性があります。ポート80idkで2つのIISインスタンスを実行している場合、それはどのように動作しますが、それがうまく機能するとは思わないので、そのうちの1つがもう1つをオーバーライドすると思います。

したがって、IIS 1でWebサービスを使用しているが、IIS2がIIS1をオーバーライドしている場合、Webサービスにアクセスすることはなく、発生するエラーが発生します。

したがって、他のIISインスタンスを指すように変更すると、再び機能し始めました。

于 2012-06-22T12:20:47.780 に答える