Note that there are some explanatory texts on larger screens.

plurals
  1. POIOException not catching java.net.UnknownHostException:
    primarykey
    data
    text
    <p>So I created a small method to send a request to a website, and I wanted to make sure it didn't crash. When I disconnect the internet and call the method, I get a <code>java.net.UnknownHostException:</code>, but I am not able to catch it. What am I doing wrong? </p> <p>The line that is giving issues atm is <code>HttpResponse response = httpclient.execute(httppost);</code></p> <p>I even handle the ClientProtocolException (subclass of IO) before the IO, so I could have both catch blocks. I've also tried adding <code>throws clauses</code> for the high level <code>Exception e</code>. Here is my code:</p> <pre><code>public String connect(String username, String password) { String answer = "Could not connect to server, please check your internet connect or try later."; try { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(baseurl); // Request parameters and other properties. List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;(2); params.add(new BasicNameValuePair("usernameUS", username)); params.add(new BasicNameValuePair("passwordUS", password)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); // Execute and get the response. HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); if (entity != null) { answer = EntityUtils.toString(entity, charset); try { if (answer.equals("Authenticated")) { this.password = password; this.username = username; Authenticated = true; return answer; } else { return answer; } } finally { } } return "Could not connect to server, please try later."; } catch (ClientProtocolException ex) { Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, null, ex); return answer; } catch (IOException ex) { Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, null, ex); return answer; } } </code></pre> <p>And the exception:</p> <pre><code>java.net.UnknownHostException: www.example.com at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866) at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258) at java.net.InetAddress.getAllByName0(InetAddress.java:1211) at java.net.InetAddress.getAllByName(InetAddress.java:1127) at java.net.InetAddress.getAllByName(InetAddress.java:1063) at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:278) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:162) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at usclient.Connection.connect(Connection.java:65) </code></pre> <p>Working code:</p> <pre><code>public class Connection { private static Connection conn; String username, fileURL; String baseurl = "http://www.example.com"; String content, password = ""; String charset = "UTF-8"; HttpURLConnection request; URL url; OutputStreamWriter post; BufferedReader in; private Connection() { } public static Connection getInstance() { if(conn==null) { conn = new Connection(); } return conn; } public String connect(String username, String password){ String answer = "Could not connect to server, please check your internet connect or try later."; try { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(baseurl); // Request parameters and other properties. List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;(2); params.add(new BasicNameValuePair("usernameUS", username)); params.add(new BasicNameValuePair("passwordUS", password)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); //Execute and get the response. HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); if (entity != null) { String[] data = EntityUtils.toString(entity, charset).split("\\n"); answer = data[0]; try { if(answer.contentEquals("Authenticated")) { this.password = password; this.username = username; if(data.length&lt;1) fileURL = data[1]; return data[0]; } else { return answer; } } finally { } } return "Could not connect to server, please try later."; } catch (ClientProtocolException ex) { Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, "Exception caught:", ex); return empty; } catch (IOException ex) { Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, "Exception caught:", ex); return empty; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload