如何清空HttpURLConnection的inputStream

staticabc 2014-09-25 03:31:32
下面是一段HTTP请求的代码,在标红的地方抛出了异常,如果把Eclipse重启,第一次debug没问题,第二次以后就一直过不去,抛:
ProtocolException:Cannot write output after reading input.
请各位看看为什么?
	public static String queryInfo(String request, String serviceurl, int timeout){
HttpURLConnection conn = null;
try {
URL url = new URL(serviceurl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Mojo/IOS");
conn.setRequestProperty("Accept", "application/xml;charset=UTF-8, text/javascript, */*; q=0.01");
conn.setRequestProperty("Content-Type", "application/xml;charset=UTF-8");
// conn.setRequestProperty("Referer", "http://wsa.sg.redatoms.com");
conn.setRequestProperty("gamelanguage", "zh_cn");
conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");
conn.setRequestProperty("Connection", "keep-alive");
conn.setRequestProperty("Host", "wsa.sg.redatoms.com");
// conn.setRequestProperty("Cookie", cookie);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setConnectTimeout(timeout);
conn.setInstanceFollowRedirects(false);
conn.connect();
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

out.write(request);
out.flush();
out.close();
String strLine = "";
String strResponse = "";
InputStream in = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
while ((strLine = reader.readLine()) != null)
{
strResponse += strLine;
}

conn.getInputStream().close();
return strResponse;

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.disconnect();
System.out.print("");
}

return null;
}
...全文
202 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王司徒 2014-09-26
  • 打赏
  • 举报
回复
第29行的那个InputStream没有关闭吧, 楼上说的很对 in和out都要关闭,而且在finally里面
weinianjie1 2014-09-26
  • 打赏
  • 举报
回复
无论什么情况,finally里请务必要关闭IO,就是in和out
staticabc 2014-09-26
  • 打赏
  • 举报
回复
红色没显示出来,就是这句: OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); 我debug的时候发现,第一次走到这句之前conn的inputstream=null,第二次debug在这句conn = (HttpURLConnection) url.openConnection();之后,inputstream就有值了,我想问下,为什么会有值?怎么置成null?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧