我在我的安卓应用程序中使用HttpURLConnection使用API,它运行得很好,但是如果我得到的响应码不是200ok(比如404,500),当我在错误响应码之后点击下一个请求时,我的端口就会改变:我的安卓请求的代码如下所示,还有wireshark的日志:
try {
url = new URL(path_url + apiMsg); //in the real code, there is an ip and a port
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setConnectTimeout(5000);
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept","*/*");
}
请参阅wireshark日志:
那么如何避免在出错的情况下更改端口,就像在成功200的情况下一样,这样我们就可以继续在相同的端口上运行。
发布于 2018-06-07 08:40:35
阅读HttpURLConnection源代码中关于sun.net.http.errorstream.enableBuffering的内容。
默认情况下,当响应代码为>= 400时,连接将关闭。这是一种干净但效率不高的处理错误流的方法。
与其设置模糊的系统属性来处理这个问题,不如转移到合适的http客户端,比如apache。
https://stackoverflow.com/questions/50714587
复制相似问题