关于HttpURLConnection抓取数据502异常问题

hectorhua 2014-09-11 10:01:47
描述:我想连续抓取2000多组天气数据存储在文件中,使用代理IP和端口号,利用HttpURLConnection获取网络接口数据。
问题:[b]1.单个抓取每一组数据都没有问题;
2.抓取过程中间断开的地方每次不一样,有抓100多组数据后断开的也有1000多组后断开的;
3.程序报异常:java.io.IOException: Server returned HTTP response code: 502 for URL: http://open.weather.com.cn/data/?areaid=101031400&type=forecast3d&date=201409110939&..................................
但是URL是没问题的,每次断开地方也不一样。
4.是否是网络原因导致中断?如果不能保证网络怎么能加强程序健壮性,让每次断开后还能继续抓取,直至2000多组数据抓取完毕?

求指教~
部分代码如下:(原来比这些简化,也没用post,后来看网上说的一步步加了一些setDoOutput、setDoInput、setConnectTimeout之类的,还是不行)[/b]


public String getURLContent(String urlStr, String encode) throws Exception{

if(isProxyEnabled){
Properties prop = System.getProperties();
prop.setProperty("http.proxyHost", proxyHost);
prop.setProperty("http.proxyPort", proxyPort);
}

URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.setUseCaches(false);
httpConn.setRequestMethod("POST");
httpConn.setInstanceFollowRedirects(true);
httpConn.connect();
httpConn.setConnectTimeout(3000);
httpConn.setReadTimeout(3000);
DataOutputStream out = new DataOutputStream(httpConn.getOutputStream());
out.flush();
out.close();
//OutputStream outStrm = httpConn.getOutputStream();
BufferedReader bufReader;
StringBuilder contentBuf = new StringBuilder(1024*100);
try{
bufReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), encode));
String line = "";
while ((line = bufReader.readLine()) != null) {
contentBuf.append(line);
}
bufReader.close();
}
catch(Exception e){
e.printStackTrace();
}
httpConn.disconnect();
return new String(contentBuf);
}
...全文
746 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sheally_Show 2014-10-28
  • 打赏
  • 举报
回复
我也遇取天气的问题,有牛人帮忙解决一下么

62,634

社区成员

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

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