web-dev-qa-db-ja.com

org.Apache.http.conn.HttpHostConnectException:http:// localhostへの接続がandroidで拒否されました

サーバーに画像をアップロードし、データベースをサーバーに更新するアプリケーションを作成していますAndroid実行中にエラーが表示されます

Connection to http://localhost refused 

さらに多くのエラー、私はこの問題を調査し、URL接続を提供する代わりに発見しました

http://localhost/... provide the link as http://10.0.2.2/... 

そして私はそうしましたが、問題は同じです、より多くのエラーがここにあります:

E/org.Apache.http.conn.HttpHostConnectException(4318): Connection to http://localhost refused
E/org.Apache.http.conn.HttpHostConnectException(4318): org.Apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:183)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.Java:164)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.Java:119)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:360)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:555)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:487)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at com.example.Android.photobyintent.ViewRecipients.uploadFile(ViewRecipients.Java:325)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at com.example.Android.photobyintent.ViewRecipients$1.run(ViewRecipients.Java:238)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.lang.Thread.run(Thread.Java:856)
E/org.Apache.http.conn.HttpHostConnectException(4318): Caused by: Java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.Java:114)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:192)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:459)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at Java.net.Socket.connect(Socket.Java:842)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.Java:119)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at org.Apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.Java:144)
E/org.Apache.http.conn.HttpHostConnectException(4318):  ... 8 more
E/org.Apache.http.conn.HttpHostConnectException(4318): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.Posix.connect(Native Method)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.Java:85)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connectErrno(IoBridge.Java:127)
E/org.Apache.http.conn.HttpHostConnectException(4318):  at libcore.io.IoBridge.connect(IoBridge.Java:112)
E/org.Apache.http.conn.HttpHostConnectException(4318):  ... 13 more

ファイルのアップロードのコードは次のとおりです。

public int uploadFile(ArrayList<String> sourceFileUri, String info, String latitude, String longitude, String id) throws IOException {
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");

            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("returnformat", new StringBody("json"));
            System.out.println(sourceFileUri.size());
            for(int i=0;i<sourceFileUri.size();i++){
                String sourceFile = sourceFileUri.get(i);
                entity.addPart("uploaded_file"+(i+1), new FileBody(new File(sourceFile)));
            }

            entity.addPart("fld_delivery_id", new StringBody(id));
            entity.addPart("fld_delivery_location", new StringBody(info));
            entity.addPart("fld_latitude", new StringBody(latitude));
            entity.addPart("fld_longitude", new StringBody(longitude));
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost, localContext);
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(
                            response.getEntity().getContent(), "UTF-8"));

            String sResponse = reader.readLine();
            return 1;
        } catch (Exception e) {
            if (dialog.isShowing())
                dialog.dismiss();

            Log.e(e.getClass().getName(), e.getMessage(), e);
            return 1;
        }

       }

デバッグ中にコードが到達するまで:

httpPost.setEntity(entity);

そして、それはこの行の後に例外を示しています。つまり、このステートメントに:

HttpResponse response = httpClient.execute(httpPost, localContext);

誰もこれで私を助けることができますか?

28
ugene

エミュレータを使用してローカルサーバー用のアプリを実行している場合。ローカルipas 10.0.2.2そして、あなたのアプリにインターネット許可を与える必要があります:

<uses-permission  Android:name="Android.permission.INTERNET" />

<uses-permission Android:name="Android.permission.INTERNET"/>上記のタグをAndroidプロジェクトのAndroidManifest.xmlに追加します。これで問題ありません。

13
Jeffery Yuan
http://localhost

上記のホストは、コードを実行しているエミュレーターによって既に占有されています。コンピューターのローカルホストにアクセスする場合は、IPアドレスをhttp://10.0.2.2:8080/

詳細については、こちらを参照してください link

7
TNR

私はまったく同じ問題に直面していましたが、URLに次の変更を加えた後、完全に正常に動作しました。

から:

http://localhost/Image4Android/get_all_images.php

に:

http://192.168.1.2/Image4Android/get_all_images.php

where the ip: 192.168.1.2 is IPv4 address. In windows Run > CMD > Ipconfig
4
min2bro

ワンプサーバーの場合は10.0.2.2ローカルホストの場合10.0.2.2/phpMyAdmin

tomcatの場合は10.0.2.2:8080/server

3
Ali Nawab

localhostを10.0.2.2:8080に変更する上記の回答に加えて、マニフェストのアプリケーションタグの外部にアクセス許可を追加してみてください

3
Gridtestmail

同じネットワーク上でAndroidデバイスを実行していることを確認してください。これにより問題が解決します。お楽しみください!!!

2

デバイスでテストするときは、PCのIPアドレスを追加します。

pCでcmd Ipconfigで実行

ubuntuの実行ターミナルifconfig

次に、"http://your_pc_ip_address:8080/register"を使用する代わりに"http://10.0.2.2:8080/register"を使用します

in my pc = 192.168.1.3

また、マニフェストにインターネット許可を追加します

<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
2
hash

このエラーにつながる基本的で簡単なことの1つは、No Internet Connectionです。

最初にデバイスのインターネット接続をオンにします。

(そうするのを忘れるかもしれません)

0
Prabs

このエラーの2つの解決策:

1. AndroidプロジェクトのandroidManifest.xmlにこの許可を追加します

<uses-permission Android:name="Android.permission.INTERNET"/>

2. 最初にデバイスのインターネット接続をオンにします。

0
Nageeb Mohammed

私は同様の問題を抱えていたのですが、スマートフォンで無線LANが接続されていないことがわかりました。 Wi-Fiをオンにして同様のネットワーク(ラップトップを使用)に接続した後、別の問題が発生しました。ラップトップのファイアウォールが着信接続をブロックしていました。ファイアウォールを修正したら、Androidアプリからラップトップで実行されているWebサービスと通信できました。

0
Farkhod