在代号一中获取 http 响应代码的最佳方法

Best way to get http response code in codename one

我只对多个站点的 HTTP 响应代码(2xx、3xx、4xx 和 5xx)感兴趣。

我当前的代码在代号为 one 的模拟器中运行良好。但是作为 Android 上的应用程序,代码会为某些网站抛出 EOFExceptions。在这些情况下,我没有收到响应代码。

我该如何解决这个问题?在代号一中获取所有这些 http return 代码的最佳和推荐方法是什么?

for (final Host h : current_hosts) {

    ConnectionRequest cr = new ConnectionRequest() {


        protected void readResponse(InputStream input) {

            h.setHost_return_code(getResponseCode());

            try {
                String response = Util.readToString(input);
                input.close();
            } catch (IOException err) {
                // do nothing
            }

        }
    };
    cr.setUrl(h.getHost_url());
    cr.setHttpMethod("HEAD");
    cr.setFollowRedirects(false);
    cr.setReadResponseForErrors(true);
    cr.setPost(false);
    cr.setFailSilently(false);
    cr.setSilentRetryCount(2);
    cr.setTimeout(15000);

    NetworkManager.getInstance().addToQueueAndWait(cr);

}

DDMS 堆栈跟踪:

02-22 17:04:19.463: W/System.err(29698): java.io.EOFException
02-22 17:04:19.463: W/System.err(29698):    at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:202)
02-22 17:04:19.463: W/System.err(29698):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:98)
02-22 17:04:19.463: W/System.err(29698):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
02-22 17:04:19.473: W/System.err(29698):    at com.android.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:468)
02-22 17:04:19.473: W/System.err(29698):    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:666)
02-22 17:04:19.473: W/System.err(29698):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
02-22 17:04:19.473: W/System.err(29698):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
02-22 17:04:19.473: W/System.err(29698):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
02-22 17:04:19.473: W/System.err(29698):    at com.codename1.impl.android.AndroidImplementation.getResponseCode(AndroidImplementation.java:3947)
02-22 17:04:19.473: W/System.err(29698):    at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:367)
02-22 17:04:19.473: W/System.err(29698):    at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:269)
02-22 17:04:19.473: W/System.err(29698):    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:60)
02-22 17:04:19.473: W/System.err(29698):    at java.lang.Thread.run(Thread.java:841)

你的手机有互联网连接吗? 主机可以用手机访问吗?

这是因为这个已知的 Android 错误:

我们会将解决方法添加到代号一中,这样事情就应该 "just work"。