AndroidアプリケーションにWebサービスを実装しました。Webサービスはローカルホスト(192.168.1.2)で実行されています。Android Webサービスに接続します。デバッグモードを使用して、AndroidデバイスをWebサービスに接続しようとしましたが、機能しませんでした。したがって、Androidデバイスは、実際のIPを使用せずにローカルホスト(192.168.1.2)で実行されているこのWebサービスに接続しますか?
すでに問題を解決しましたか?あなたのような問題もありました。これらは私がすでに行ったステップです:
これで、携帯電話からPCでWebサービスアプリにアクセスできます。
Localhostは127.0.0.1(または:: 1)で、LAN IPは192.168.1.2です。 LANで接続されている各PC /デバイスは、IP 192.168.1.2のWebサービスに到達できます。
あなたのAndroidデバイスは同じLANでWifi接続を介して接続されている必要がありますので、192.168.1.2と通信できます。
Androidデバイスを同じLANで接続できない場合、たとえば3g接続しかない場合、すべての着信トラフィック(たぶんhttpトラフィックのみ)をリダイレクトするためにルーター/ファイアウォールで遊ぶ必要があります)パブリックIPからプライベートIP(192.168.1.2)
この助けを願っています
SOには何も役に立たなかったので、プロセスを投入します。以下は、物理Androidデバイスをローカルホストのラップトップ(電話に接続)で実行されているWebサービスに接続するために行った手順です。
マシンでWebサービスを実行します。私のWebサービスは、localhost、開発中のポート3000で実行されます:http://localhost:3000/api/...
ifconfig
(Unix)またはipconfig
(Windows)を実行します
inet
アドレスを見つけます。私のインターフェイスはwlan0
で10.0.0.121です。外部では、68.43.XX.XXXであり、これはnot使用するアドレスです。econnrefused
(接続は拒否されました)ファイアウォールルールによるエラーhttp://10.0.0.121:3000/api/...
アプリを起動すると、ログ、WiresharkなどでローカルWebサービスに接続する必要があり、Androidアプリケーションに目的のアクティビティ/データが表示されます。
私は同じ問題を抱えていましたが、多くの調査を行った結果、ファイアウォールの設定を明示的に変更する必要があることがわかりました。ファイアウォールは、外部ソースからアクセスされるコードをブロックしています。したがって、必要なことは、ファイアウォールの設定に移動し、インバウンドおよびアウトバウンド用にポート80を追加することです(私の場合、Apache httpサーバーを使用しています)。これで、携帯電話のブラウザでテストできます http://192.16。。**:80 /
GasMaskとCharles Proxy Serverを使用してMacでそれを行いました。電話とコンピューターは同じネットワーク上にある必要があります。
アクセスしたいWebサービスのURLが http://api.xyz.com である場合、まずGasMaskを使用してそのURLをローカルホストに向け、次にCharlesを使用してプロキシサーバーを設定します。次に、電話機の設定に移動し、Wi-Fiに移動して、接続しているネットワークを長押しし、[ネットワークの変更]を選択して、Charlesから提供されたプロキシ設定を入力します。
DEV Webサービスをインターネット上に公開したくない場合は、他の回答に良いアプローチとして同意します。ただし、単にWebサービスを公開する方がはるかに簡単です。無料のDNSサービスは数多くありますが、設定が最も簡単なのはno-ipであることがわかりました。私はあなたが尋ねたまさにその目的のためにそれを使用します。そのため、実際のデバイスでDEV Webサービスを使用してテストできます。
No-ipを使用することを選択した場合(私はその会社とは提携関係がなく、私が使用したものであり、よく知っているものです)、 http:// MyExampleWebServer .no-ip-org 、およびno-ipにはインストール可能なユーティリティがあるため、動的IPの背後にいても、そのURLに関連付けられた正しい外部IPを常に保持します。自宅で作業している場合は、ポート80から内部192.x.x.x IPアドレス(または使用する任意のポート、SSLの場合は443)にトラフィックを転送することを確認する必要があります。
それはそれと同じくらい簡単です、そして今、あなたはインターネットにアクセスできるどんなデバイスからでもそのウェブサービスを打つことができます。
私はそれを使ったことがありませんが、dyndnsも同様のサービスを提供していると思います。
私の場合、これらのソリューションはWindowsファイアウォールによってブロックされているため機能しませんが、ファイアウォールにルールを設定しても効果はありません。
私の場合の問題は、ラップトップがWifiに接続されていて、WindowsがパブリックネットワークのようなWifi接続を持っていたことです。ネットワーク接続をプライベートネットワークに変更する必要があります。 http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/
このソリューションは、EclipseのGAE開発サーバー用です
ステップ1:LAN IPを取得する
Windowsコマンドコンソールに移動します(Win + Rを押してから、「cmd」と入力します)。コンソールで、「ipconfig」と入力します。ディスプレイのリストが表示されます。ワイヤレスLANアダプターWi-Fiで、IPv4アドレスを取得します。 192.168.x.xになります
LAN IP:192.168.x.x
ステップ2:
Eclipseに移動し、構成済みサーバーを開きます
[GAE開発サーバーのプロパティ]-> [バインドするローカルインターフェイスアドレス]で、LAN IPアドレスを入力し、保存します。
ステップ3:
これで、GAEサーバーにアクセスできます。
8888-GAE開発サーバーに記載されているポート番号を参照
ポートを持つIPアドレスではなく、独自のサーバーホストを使用してローカルWebサービスにアクセスするには、次の手順を実行します。
次のWebサービスを使用しています。
a。 Webブラウザ:Modify WiFi networkからAndroidデバイスのプロキシ設定を構成します。
b。 Android application:HTTPクライアントのプロキシを設定します。Volleyを使用している場合は、これを確認してください: Volley Behind a Proxyサーバー 。
ヒント:4xx応答コードを取得した場合は、Webサービスが他の非ローカルホストからの接続を許可していることを確認してください。