HttpHostConnectException: la connessione ha rifiutato Android

Sto cercando di connettersi tramite HttpPost e submit un nome utente e una password a un sito web e ricevere una string da quel sito. Ho provato diversi methods che hanno funzionato per me in passato, ma ora quando invio gli identificatori di nome utente e password, le applicazioni si spengono per 4 minuti e poi sputa la seguente exception:

07-16 16:32:32.897: W/System.err(632): Unable to connect to the server 07-16 16:32:32.907: W/System.err(632): org.apache.http.conn.HttpHostConnectException: Connection to http://devdashboard.company refused 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183) 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 07-16 16:32:32.917: W/System.err(632): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 07-16 16:32:32.927: W/System.err(632): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 07-16 16:32:32.927: W/System.err(632): at company.android.dashboard.app.HttpHelperAndroid.sendToHttp(HttpHelperAndroid.java:66) 07-16 16:32:32.927: W/System.err(632): at company.android.dashboard.app.DashboardAppActivity.goToDashboard(DashboardAppActivity.java:62) 07-16 16:32:32.927: W/System.err(632): at java.lang.reflect.Method.invokeNative(Native Method) 07-16 16:32:32.937: W/System.err(632): at java.lang.reflect.Method.invoke(Method.java:511) 07-16 16:32:32.937: W/System.err(632): at android.view.View$1.onClick(View.java:3039) 07-16 16:32:32.947: W/System.err(632): at android.view.View.performClick(View.java:3511) 07-16 16:32:32.947: W/System.err(632): at android.view.View$PerformClick.run(View.java:14105) 07-16 16:32:32.947: W/System.err(632): at android.os.Handler.handleCallback(Handler.java:605) 07-16 16:32:32.957: W/System.err(632): at android.os.Handler.dispatchMessage(Handler.java:92) 07-16 16:32:32.957: W/System.err(632): at android.os.Looper.loop(Looper.java:137) 07-16 16:32:32.967: W/System.err(632): at android.app.ActivityThread.main(ActivityThread.java:4424) 07-16 16:32:32.977: W/System.err(632): at java.lang.reflect.Method.invokeNative(Native Method) 07-16 16:32:32.977: W/System.err(632): at java.lang.reflect.Method.invoke(Method.java:511) 07-16 16:32:32.977: W/System.err(632): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 07-16 16:32:32.987: W/System.err(632): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 07-16 16:32:32.987: W/System.err(632): at dalvik.system.NativeStart.main(Native Method) 07-16 16:32:32.987: W/System.err(632): Caused by: java.net.ConnectException: failed to connect to /50.19.240.232 (port 80): connect failed: ETIMEDOUT (Connection timed out) 07-16 16:32:32.997: W/System.err(632): at libcore.io.IoBridge.connect(IoBridge.java:114) 07-16 16:32:32.997: W/System.err(632): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 07-16 16:32:32.997: W/System.err(632): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 07-16 16:32:33.007: W/System.err(632): at java.net.Socket.connect(Socket.java:842) 07-16 16:32:33.007: W/System.err(632): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 07-16 16:32:33.017: W/System.err(632): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 07-16 16:32:33.017: W/System.err(632): ... 22 more 07-16 16:32:33.027: W/System.err(632): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out) 07-16 16:32:33.047: W/System.err(632): at libcore.io.Posix.connect(Native Method) 07-16 16:32:33.047: W/System.err(632): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 07-16 16:32:33.047: W/System.err(632): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 07-16 16:32:33.057: W/System.err(632): at libcore.io.IoBridge.connect(IoBridge.java:112) 07-1 6 16:32:33.057: W/System.err(632): ... 27 more 

L'authorization Internet è triggersta nel mio file di manifesto XML

  • Mantieni / Salva / Ripristina la posizione di scorrimento quando si torna a un elencoView
  • Android aggiungendo nuovi xml e class
  • Gonfiare manualmente la visualizzazione personalizzata rende diversi layout per la visualizzazione personalizzata di ActionBar
  • posso utilizzare il pager di visualizzazione con visualizzazioni (non con frammenti)
  • android ottiene il path reale da Uri.getPath ()
  • Nuovo carattere di linea \ n non visualizzando correttamente in textView Android
  • La mia attuale attuazione è così:

      String LOGIN = "email@gmail.com"; String PASSWORD ="password1"; //JSONObject to send the username and pw JSONObject json = new JSONObject(); //put the path in the JSONArray object JSONArray vect = new JSONArray(); vect.put("company Android Library"); vect.put("Rocket Ship"); int duration = 50; try { json.put("email", LOGIN); json.put("password", PASSWORD); json.put("json", "true"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d(TAG, "ABOUT TO SEND:" + json.toString()); JSONObject inJson = HttpHelperAndroid.sendToHttp(json, "http://devdashboard.company/login"); if(inJson != null) { Log.d(TAG, "RECIEVED the JSON:" + inJson.toString()); } else Log.d(TAG, "THE RESPONSE WAS NULL"); } 

    E la class HttpHelperAndroid sembra così:

      public class HttpHelperAndroid { private static final String TAG = "HttpHelperAndroid";//TAG for the LogCat(debugging) private static boolean responseSuccessful = true; /** * sends the JSONObject parameter to the desired URL parameter and gets the response * * @param url the URL to which the JSONObject should be sent * @param jsonObjOut the JSONObject that is to be sent * @return the response from the server as a JSONObject */ public static JSONObject sendToHttp(JSONObject jsonObjOut, String url) { responseSuccessful = true; try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpRequest = new HttpPost(url); //convert the JSONObject to a string StringEntity se; //set our StringEntity to the JSONObject as a string se = new StringEntity(jsonObjOut.toString()); // Set HTTP params httpRequest.setEntity(se); httpRequest.setHeader("Accept", "application/json"); httpRequest.setHeader("Content-type", "application/json"); httpRequest.setHeader("Accept-Encoding", "gzip"); //for gzip compression //get the current time long oldTime = System.currentTimeMillis(); HttpResponse response = null; try { //execute the http request and get the response response = (HttpResponse) httpClient.execute(httpRequest); } catch(HttpHostConnectException e) { System.err.println("Unable to connect to the server"); e.printStackTrace(); responseSuccessful = false; } //only continue executing if we got a response from the server if(responseSuccessful) { //print how long the response took to the LogCat if it's on Log.i(TAG, "HTTPResponse received in [" + (System.currentTimeMillis()-oldTime) + "ms]"); // Get hold of the response entity (-> the data): HttpEntity entity = response.getEntity(); if (entity != null) { // Read the content stream InputStream in = entity.getContent(); Header contentEncoding = response.getFirstHeader("Content-Encoding"); if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) { in = new GZIPInputStream(in); } // convert content stream to a String String resultString= streamToString(in); //close the stream in.close(); // convert the String into a JSONObject JSONObject jsonObjRecv = new JSONObject(resultString); //take a peak at the JSONObject we got back if the LogCat is on Log.i(TAG,"<JSONObject>\n"+jsonObjRecv.toString()+"\n</JSONObject>"); //return the JSONObject we got back from the server return jsonObjRecv; } } } //catch any exception that was thrown catch (Exception e) { //Print the exception e.printStackTrace(); } return null; } private static String streamToString(InputStream is) { //create a new BufferedReader for the input stream BufferedReader reader = new BufferedReader(new InputStreamReader(is)); //create a new StringBuilder to append the lines StringBuilder sb = new StringBuilder(); //initialize an empty string String line = null; try { //iterate as long as there is still lines to be read while ((line = reader.readLine()) != null) { //append the line and a newline character to our StringBuilder sb.append(line + "\n"); } } //catch an IOException and print it catch (IOException e) { e.printStackTrace(); } //close the stream when we're done finally { try { is.close(); } //catch and print an exception if it's thrown catch (IOException e) { e.printStackTrace(); } } //return the stream converted to a string return sb.toString(); } } 

    Ecco il mio XML per i calci:

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="company.android.dashboard.app" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/company_android_ico" android:label="@string/app_name" > <activity android:name=".DashboardAppActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

    Ho usato la class HttpHelper nei progetti passati e ha lavorato per me, oltre a cercare di implementare questo con nameValuePairs:

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("email", "email@gmail.com")); nameValuePairs.add(new BasicNameValuePair("password", "password1")); nameValuePairs.add(new BasicNameValuePair("json", "true")); try { httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

    E questo ha dato lo stesso risultato.

    Potrebbe essere in qualche modo una cosa del certificato? o forse qualcosa a che fare con un file XML corrotto (ho provato a rimodellare il progetto e il file xml) HTTP Connection Android rifiutato O forse una sorta di problema di file host di Android?

    Sono aperta a qualsiasi suggerimento!

    Ho esaminato questo da molti angoli e sono contento di fornire qualsiasi altra informazione utile. Apprezzo molto il tuo tempo!

    NOTA: L'url è un url dummy, e non quello attuale a cui sto collegando, per motivi di sicurezza. Sono in grado di curl il sito effettivo dalla row di command con i parametri e funziona e sono anche in grado di accedere normalmente dal browser web.

    EDIT Ho identificato il problema! Ma non la soluzione purtroppo. Quindi il problema è che sto utilizzando un URL di server dev che non dispone di una voce di dominio sul server DNS globale. Quindi, per risolvere questo problema, devo in qualche modo modificare il file host sul mio dispositivo Android / nell'emulatore … qualcuno sa come possa essere fatto legittimamente?

  • JSON Parsing funziona in Android 4.0 ma non su Android <4.0
  • AndroidJNIC non è in grado di escutare la mia function non statica
  • Flip freccia su spinner android nella barra degli strumenti
  • come controllare se il dispositivo ha lampadina led android
  • Supporto di Android smartphone per Android Tablet
  • possiamo call startActivityForResult dalla scheda?
  • 5 Solutions collect form web for “HttpHostConnectException: la connessione ha rifiutato Android”

    Ho identificato il problema! Quindi il problema è che sto utilizzando un URL di server dev che non dispone di una voce di dominio sul server DNS globale.

    Così ci sono due possibili soluzioni per questo problema:

    1) Modifica del file Hosts sul dispositivo Android (richiede il rooting del telefono): Come modificare il file host su android

    2) Ottenere il server registrato sul server DNS globale. (anche difficile da fare se non sei responsabile dell'URL)

    Comunque spero che questo aiuti anche qualcun altro!

    Ci sono poche possibilità

    1) l'url non è corretto "http://devdashboard.company/login&quot; non è giusto. Alless controllare nel browser. ping anche l'host.

    2) Dovrebbe essere una connessione https invece.

    3) è richiesta alcuna certificazione.

    4) Manca un numero di port. o il dominio non è stato impostato correttamente. forse la port 80 il difetto è errato?

    5) la chiamata non dovrebbe essere un post.

    In generale sei responsabile del server o non lo sei. Sembra che sia un po 'responsabile, e dovresti chiederle a quali sono i parametri ei parametri corretti. Quindi la sua probabilmente nessuna colpa, ma è necessario chiedere loro la connessione per verificare.

    L'altra cosa che puoi fare è provare a vedere cosa sembra l'URL in un'applicazione che si sta connettendo con successo. dare un'occhiata a questo.

    Il problema è in wifi dormire. Si prega di utilizzare

     WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , "MyWifiLock"); wifiLock.acquire(); 

    e l'authorization:

     uses-permission android:name="android.permission.WAKE_LOCK"; 

    Si prega di seguire questa soluzione potrebbe essere tra questi uno risolvere il problema.

    1> controlla il tuo file di file manifesto lì o no.

    2> controllare il tuo URL con il browser da parte del client di rest e passare la richiesta appropriata.

    3> apri l'URL in mobile come: – http: // il tuo indirizzo / port ip che è solo per controllare hai un permesso o non aprire questo URL nel cellulare.

    Questo post è vecchio, ma è il primo risultato di questo errore. Ho incontrato la stessa exception, e tutto era completamente corretto nel mio codice. Ho commentato la row contenente l'authorization INTERNET nel mio AndroidManifest.xml, ho eseguito l'applicazione, ho cliccato / premuto il mio button per submit la richiesta HTTP e ricevere l'exception, chiudere l'applicazione, tornare al manifesto, ignorare la linea di authorization, eseguire l'applicazione ancora, e l'exception è stata risolta!

    Questo genere di bug nel 2015 (e negli strumenti "avanzati" come gli ultimi strumenti di compilazione per Android API 21 e Intellij IDEA 14) mi spaventano! Stai avvicinando alla tua scadenza, e questo tipo di bug interrompe completamente il tuo lavoro!

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.