我在我的Android应用程序中使用HttpURLConnection消耗API并且运行正常但是如果我得到响应代码,那么200 ok(如404,500)我的端口正在改变,当我在错误响应代码后点击下一个请求时: 我的android请求代码如下: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日志:
那么如何在错误场景中避免PORT更改以及成功200例,以便我们继续在同一个PORT上运行。
答案 0 :(得分:0)
在HttpURLConnection源代码中阅读sun.net.http.errorstream.enableBuffering。
默认情况下,当响应代码为> = 400时,连接将关闭。 处理错误流是一种干净但不那么有效的方法。
不要设置模糊的系统属性来处理这个问题,最好转移到像apache这样的适当的http客户端。