Flash Builder と Flex を使用して、iOS と Android の両方に展開するモバイル アプリケーションを開発しています。すべてが Flash Builder エミュレーターで動作しているので、物理デバイスでテストを開始したいところです。
アプリが読み込まれ、最初のビューが表示されると、次のコードが実行されます。
creationComplete="initApp(event)
protected function initApp(event:FlexEvent):void
{
pricingAppWebService1.updateApp("RAMISAppUpdate");
}
私の問題は、Web サービス (以下に示す) を使用してサーバーからアプリに xml データを読み込もうとすると、エラーが発生することです。Flash Builder エミュレーターで動作するため、これは奇妙です。
<fx:Declarations>
<s:WebService id="pricingAppWebService"
wsdl="http://dev.ramislive.com/webservice/pricing.asmx?WSDL"
result="dataSent_resultHandler(event)"
fault="dataSent_faultHandler(event)" />
</fx:Declarations>
アプリが xml データを取得しようとすると、pricingAppWebService_faultHandler にヒットし、その時点で、デバイスは入力テキストに表示された自分のマシンのローカル IP を含む [OK/キャンセル] ポップアップ ボックスを表示します。
protected function pricingAppWebService_faultHandler(event:FaultEvent):void
{
trace(event.fault);
navigator.pushView(MainMenu);
}
トレースは、Flash Builder コンソールに次の情報を提供します。
[ RPC Fault faultString="HTTP request error" faultCode="Server.Error.Request"
faultDetail="Unable to load WSDL.
If currently online, please verify the URI and/or format of the WSDL
(http://dev.ramislive.com/webservice/pricing.asmx?WSDL)" ]
当然端末側のセキュリティ設定を考えたところ、src/Main-App.xml内のandroidマニフェストファイルに以下が存在します。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
注意として、私はこの質問を見てきましたが、私の問題の解決策は非常に似ている可能性があります. ただし、ドメインを IP アドレスに置き換えようとしましたが、成功しませんでした。この質問があいまいすぎる場合はお詫びします。このサイトでの私の最初の質問です。mxml ファイル全体をできるだけ詳細に説明するように努めました。
この問題は、ある種のセキュリティ上の問題を引き起こしているようです - これがポップアップ ボックスであると私は推測しています。ただし、これは憶測にすぎませんが、[OK] をクリックし、電話の [戻る] ボタンを押してデータの再読み込みを試みると、サーバーが応答に気付きます。