web-dev-qa-db-ja.com

Androidデバイスをローカルホスト上のWebサービスに接続する

AndroidアプリケーションにWebサービスを実装しました。Webサービスはローカルホスト(192.168.1.2)で実行されています。Android Webサービスに接続します。デバッグモードを使用して、AndroidデバイスをWebサービスに接続しようとしましたが、機能しませんでした。したがって、Androidデバイスは、実際のIPを使用せずにローカルホスト(192.168.1.2)で実行されているこのWebサービスに接続しますか?

47
adadad

すでに問題を解決しましたか?あなたのような問題もありました。これらは私がすでに行ったステップです:

  1. lANケーブルを抜くか、PCから他のインターネット接続をオフにします。
  2. uSBを使用してAndroidモバイルをPCに接続します。
  3. uSBテザリングを有効にする
  4. pCに戻ります。 IPを確認してください。私のものは192.168.42.37
  5. pCでWebサービスアプリを確認してください。 http://192.168.42.37/webserviceapp としましょう
  6. Android mobile。このURLを試してください http://192.168.42.37/webserviceapp

これで、携帯電話からPCでWebサービスアプリにアクセスできます。

33

グーグルがサポートするもっと簡単な方法です!

  • 携帯電話をUSB経由でコンピューターに接続し、USBデバッグを有効にします
  • コンピューターでChromeブラウザーを開き、このアドレスを正確に入力してください:chrome://inspect/#devicesenter image description here
  • これで、コンピューターのポートをデバイスのポートにリンクできます。 ポート転送 ボタン。私のコンピューターでは、アドレスlocalhost:61437そして、デバイスの8081ポートにリンクしました。 「ポート転送を有効にする」チェックボックスにチェックマークを付ける

enter image description here

  • コンピューターのサービスからの画面(localhost:61437enter image description here

  • 同じサービスのモバイルブラウザからの画面(localhost:8081)。以上です。また、アプリケーションでこのサービスアドレスを使用します enter image description here

29
Michał Jarzyna

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)

この助けを願っています

13

SOには何も役に立たなかったので、プロセスを投入します。以下は、物理Androidデバイスをローカルホストのラップトップ(電話に接続)で実行されているWebサービスに接続するために行った手順です。

  1. AndroidデバイスでUSBデバッグを有効にする

  2. マシンでWebサービスを実行します。私のWebサービスは、localhost、開発中のポート3000で実行されます:http://localhost:3000/api/...

  3. ifconfig(Unix)またはipconfig(Windows)を実行します

  4. [〜#〜] lan [〜#〜]インターフェイスでマシンのinetアドレスを見つけます。私のインターフェイスはwlan0で10.0.0.121です。外部では、68.43.XX.XXXであり、これはnot使用するアドレスです。
  5. LAN上のサービスに接続しているため、[〜#〜] lan [〜#〜]IPを使用します。そうでない場合は、econnrefused(接続は拒否されました)ファイアウォールルールによるエラー
  6. そのIPアドレスとWebサービスが実行されているポートを使用してhttp URLを作成します。私にとっては、http://10.0.0.121:3000/api/...

アプリを起動すると、ログ、WiresharkなどでローカルWebサービスに接続する必要があり、Androidアプリケーションに目的のアクティビティ/データが表示されます。

5
Chris Cirefice

私は同じ問題を抱えていましたが、多くの調査を行った結果、ファイアウォールの設定を明示的に変更する必要があることがわかりました。ファイアウォールは、外部ソースからアクセスされるコードをブロックしています。したがって、必要なことは、ファイアウォールの設定に移動し、インバウンドおよびアウトバウンド用にポート80を追加することです(私の場合、Apache httpサーバーを使用しています)。これで、携帯電話のブラウザでテストできます http://192.16。**:80 /

2
Sonal

GasMaskとCharles Proxy Serverを使用してMacでそれを行いました。電話とコンピューターは同じネットワーク上にある必要があります。

アクセスしたいWebサービスのURLが http://api.xyz.com である場合、まずGasMaskを使用してそのURLをローカルホストに向け、次にCharlesを使用してプロキシサーバーを設定します。次に、電話機の設定に移動し、Wi-Fiに移動して、接続しているネットワークを長押しし、[ネットワークの変更]を選択して、Charlesから提供されたプロキシ設定を入力します。

1
Chao

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も同様のサービスを提供していると思います。

1
Jim

私の場合、これらのソリューションはWindowsファイアウォールによってブロックされているため機能しませんが、ファイアウォールにルールを設定しても効果はありません。

私の場合の問題は、ラップトップがWifiに接続されていて、WindowsがパブリックネットワークのようなWifi接続を持っていたことです。ネットワーク接続をプライベートネットワークに変更する必要があります。 http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/

1
mabg

このソリューションは、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 Server

[GAE開発サーバーのプロパティ]-> [バインドするローカルインターフェイスアドレス]で、LAN IPアドレスを入力し、保存します。

ステップ3:

これで、GAEサーバーにアクセスできます。

http://192.168.x.x:8888 /

8888-GAE開発サーバーに記載されているポート番号を参照

0
Prakash Ayappan

ポートを持つIPアドレスではなく、独自のサーバーホストを使用してローカルWebサービスにアクセスするには、次の手順を実行します。

  1. Androidデバイスとローカルマシンが同じネットワーク上にあることを確認してください。
  2. Macに SquidManLinux 、またはその他のプロキシサーバーをインストールします。
  3. プロキシサーバーのHTTPPort(例:5555)およびクライアント(例:192.168.0.0/24)を独自のネットワークマスクに構成し、プロキシサーバーを実行します。
  4. 次のWebサービスを使用しています。

    a。 Webブラウザ:Modify WiFi networkからAndroidデバイスのプロキシ設定を構成します。

    b。 Android application:HTTPクライアントのプロキシを設定します。Volleyを使用している場合は、これを確認してください: Volley Behind a Proxyサーバー

  5. これで、ホストで使用しているURLを使用してWebサービスに接続できます(例: http://my-local-machine.com

ヒント:4xx応答コードを取得した場合は、Webサービスが他の非ローカルホストからの接続を許可していることを確認してください。

0
zed