1

そこで、実際のAndroidデバイスでアプリをテストしたいと思いました。仮想デバイスでデバッグしましたが、スムーズに動作していますが、デバッグなどのために実際の電話でも動作できるようにしたいと考えています。ローカルでホストされているサーバーへのアクセスに使用するIPを10.0.2.2から自分のものに変更しました。したがって、アプリがクエリを実行するサーバーを呼び出すたびに、次のようになります。

HttpPost httpPost = new HttpPost("http://10.0.2.2/pagemyappwants.php");

HttpPost httpPost = new HttpPost("http://76.blahblah.etc/pagemyappwants.php");

後者は私自身のコンピューターのIPであり、過去にリモートアクセスされたサーバーを実行するために使用しました。実行しているwamp/apacheサーバーでこれをテストしました。このIPを使用すると、他のコンピューターからphpページにアクセスできます。ただし、アプリを使おうとすると、アプリが数分間フリーズしてから、タスクが完了したかのように進みますが、アプリを介して行われた変更/追加をログに記録するmysql dbを確認しても、何も起こりません。 。

要約すると、Androidで使用するためにローカルでホストされているサーバーを機能させるために必要なポート転送はありますか?または、この問題を解決する他の何か、そのことについては?ありがとうございました。

4

1 に答える 1

1

説明はあまり明確ではないようですが、アプリケーションがパブリックネットを介してパブリックIPアドレスを介して自分のPCにHTTP呼び出しを行っていることを正しく理解している場合、開く必要があるポートはポート80のみです( -セキュアHTTP)。

「アプリが数分間フリーズしてから、タスクが完了したかのように進みます」と言います。あなたは実際に数分を意味しますか、それともほんの数秒を意味しますか?分の場合、HTTPタイムアウトはそれほど長くないため、正しく聞こえません。

それが私だったら、私はしたいと思います:

  • HTTP呼び出しでトレース/デバッグを実行して、何が起こっているのか、特にどの例外がスローされているのか、またはどのような結果が返されているのかを正確に確認します。タイムアウトしているように聞こえますが、例外について言及していないため、アプリが例外を正しく処理していると思います。

  • デバイスのブラウザを使用してHTTPURLにアクセスし、実際にアクセスできるかどうかを確認します。

  • ポートフォワードを確認します。セキュリティ上のリスクが生じるため、着信HTTP要求を処理するようにルーターがデフォルトで構成されることは通常ありません。以前に設定したことがあり、現在は機能していない場合、PCのIPアドレスが異なるため、ルーターからPCへのポート転送に障害が発生している可能性がありますか?

于 2011-02-16T20:25:03.843 に答える