5

Right now I am using HTTPRequest every thing is working fine. But i want to handle the following scenario

Device is connected to wifi but wifi is not connected to internet

I am using conection time out but honestly speaking it take its own time to time out and that is 40 seconds not less than that. Code for Request (partly based on this answer by kuester2000) is following :

  public String[] doHttpGetWithCode_1(String url, String headerParam) throws Exception {
            
        
         weburl         = new URL(url);
         uri            = new URI(weburl.getProtocol(), weburl.getUserInfo(), weburl.getHost(), weburl.getPort(), weburl.getPath(), weburl.getQuery(), weburl.getRef());
         result         = new String[2];
         httpParameters = new BasicHttpParams();
            // Set the timeout in milliseconds until a connection is established.
         timeoutConnection = 3000;
         HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
            // Set the default socket timeout (SO_TIMEOUT) 
            // in milliseconds which is the timeout for waiting for data.
        timeoutSocket   = 3000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        httpURL=(HttpURLConnection) weburl.openConnection();
        httpURL.setDoOutput(true);
        httpURL.setDoInput(true);
        httpURL.setRequestMethod("GET");
        client          =new  DefaultHttpClient(httpParameters);  
        httpget = new HttpGet(url);
        httpget.addHeader("Content-Type",   "application/json");
        httpget.addHeader("Authorization", "Basic " + Base64.encodeToString(("greggs:sausage123").getBytes(),Base64.NO_WRAP));
        httpget.addHeader("X-Auth-Signature",   headerParam);
        httpget.setParams(httpParameters);
        
        try{
            response    = client.execute(httpget);
            entity      = response.getEntity();
            is          = entity.getContent();
//          BufferedReader br = new BufferedReader(new InputStreamReader(in );
            reader      = new BufferedReader(new InputStreamReader(is, HTTP.UTF_8));
            sb          = new StringBuilder();
            line        = null;
            
                try {
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
        }
        catch(ClientProtocolException CPE)
        {
            CPE.printStackTrace();
        }
        
        
            result[0] = response.getStatusLine().getStatusCode()+"";
            result[1] = sb.toString();
            return result;
        }

After running the highlighted scenario i got the following response:

10-09 10:42:00.845: W/System.err(6052): java.net.UnknownHostException: Unable to resolve host "xxx.xxx.com": No address associated with hostname
    10-09 10:42:00.850: W/System.err(6052):     at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
    10-09 10:42:00.850: W/System.err(6052):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    10-09 10:42:00.855: W/System.err(6052):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
    10-09 10:42:00.855: W/System.err(6052):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
    10-09 10:42:00.855: W/System.err(6052):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    10-09 10:42:00.860: W/System.err(6052):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    10-09 10:42:00.860: W/System.err(6052):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    10-09 10:42:00.860: W/System.err(6052):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670)
    10-09 10:42:00.860: W/System.err(6052):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
    10-09 10:42:00.865: W/System.err(6052):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    10-09 10:42:00.870: W/System.err(6052):     at com.putitout.Utils.Network.doHttpGetWithCode_1(Network.java:363)
    10-09 10:42:00.875: W/System.err(6052):     at com.putitout.GREEGS.Rewards.RewardHomeScreen$18.run(RewardHomeScreen.java:1157)
    10-09 10:42:00.880: W/System.err(6052): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
    10-09 10:42:00.880: W/System.err(6052):     at libcore.io.Posix.getaddrinfo(Native Method)
    10-09 10:42:00.885: W/System.err(6052):     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
    10-09 10:42:00.885: W/System.err(6052):     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
    10-09 10:42:00.885: W/System.err(6052):     ... 11 more
    10-09 10:42:00.890: W/System.err(6052): Caused by: libcore.io.ErrnoException: getaddrinfo failed: ETIMEDOUT (Connection timed out)
    10-09 10:42:00.890: W/System.err(6052):     ... 14 more

Now what I need to do is to add timer that runs for specific interval need a little help on this thank you in advance for your attention .

Ryan M
  • 18,333
  • 31
  • 67
  • 74
Usman Kurd
  • 7,212
  • 7
  • 57
  • 86

0 Answers0