现在我正在使用 HTTPRequest 一切正常。但我想处理以下情况
Device is connected to wifi but wifi is not connected to internet
我正在使用连接超时,但老实说,它需要自己的时间来超时,而且不少于 40 秒。请求代码如下:
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;
}
运行突出显示的场景后,我得到以下响应:
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
现在我需要做的是添加运行特定时间间隔的计时器,这需要一点帮助,提前感谢您的关注。