HttpHostConnectException: connection refused Android

I am trying to connect through HttpPost and send the username and password to the website, and then get the string from this website. I tried various methods that worked for me in the past, but now when I submit the username and password identifiers, the application expires up to 4 minutes and then throws the following 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 

Internet access permission is included in the XML manifest file

My current implementation is as follows:

  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"); } 

And the HttpHelperAndroid class looks like this:

  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 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 thrown catch (IOException e) { e.printStackTrace(); } } //return the stream converted to a string return sb.toString(); } } 

And here is my XML just for kicks:

 <?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> 

I used the HttpHelper class in past projects, and it worked for me, in addition, I tried to implement this with 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)); 

And it gave the same result.

Could this somehow become a certificate? or maybe something related to the damaged XML file (I tried to redo the project and the xml file) Android HTTP Connection refused Or maybe there is some kind of problem with the Android files?

I am open to any suggestions!

I studied this because of the large number of angles, and I am happy to provide any other information that would be useful! I really appreciate your time!

NOTE. . The url is a dummy url, not the actual one I'm connecting to for security reasons. I can twist the actual website from the command line with the parameters, and it works, and I can also log in normally from a web browser.

EDIT I have identified the problem! But not unfortunately. Therefore, the problem is that I am using the URL of a dev server that does not have a domain entry on the global DNS server. Therefore, to fix this, I somehow need to edit the hosts file on my Android device / in the emulator ... does anyone know how to do this legally?

+6
source share
5 answers

I have identified the problem! Therefore, the problem is that I am using the URL of a dev server that does not have a domain entry on the global DNS server.

So, there are two possible solutions to this problem:

1) Editing the hosts file on your Android device (requires rooting your phone): How to change the hosts file on android

2) Obtaining a server registered on the global DNS server. (also hard to do if you are not responsible for the url)

In any case, I hope this helps someone else too!

+9
source

There are several possibilities.

1) Invalid URL "http://devdashboard.company/login" is invalid. At least check your browser. ping and host.

2) Instead, it should be an https connection.

3) some certification is required.

4) You are missing a port number. or the domain is configured incorrectly. is port 80 incorrect by default?

5) the call should not be a message.

In general, you are either responsible for the server or not. It seems like this is some elses responsibility, and you should ask them what the correct URL and parameters are. Therefore, there are probably no errors, but you should ask them about the connection confirmation.

Another thing you can do is try to see what the URL looks like in an application that connects successfully. take a look what it is.

+2
source

The problem is sleeping wifi. Please, use

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

and resolution:

 uses-permission android:name="android.permission.WAKE_LOCK"; 
+2
source

Please follow these solutions, maybe among them, solve your problem.

1> check if your file has access to the manifest file or not.

2> check your client-to-client URL with the browser and submit the corresponding request.

3> open the url on the mobile phone, for example: http: // your ip address / port , that it’s just for checking whether you have permission or not to open this URL on the mobile device.

+2
source

This post is old, but this is the first result when looking for this error. I came across the same exception, and everything was perfectly correct in my code. I commented out the line containing the INTERNET permission in my AndroidManifest.xml, launched the application, pressed / tapped my button to send an HTTP request and get an exception, close the application, return to the manifest, uncomment the permission line, start the application again, and the exception was allowed!

Similar errors in 2015 (and in "advanced" tools, such as the latest compilation tools for Android API 21 and Intellij IDEA 14) infuriate me! You are approaching your deadline, and such errors completely disrupt your work!

+1
source

Source: https://habr.com/ru/post/920634/


All Articles