关于HttpURLConnection抓取数据502异常问题
描述:我想连续抓取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]
问题:[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);
}
...全文
相关推荐
Java抓取网页数据Demo
本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。首先,让我们探讨**抓取原网页**的方法。
Java HttpURLConnection超时和IO异常处理
**IO异常处理**: - `IOException`:这是所有I/O操作可能出现的基础异常,包括网络连接问题、数据流读写错误等。
Frida抓取HttpURLConnection请求[代码]
这样的异常处理不仅让脚本在出现错误时能够输出详细的错误信息,便于调试和问题诊断,还能够避免因脚本异常而导致目标应用崩溃,这对于保持测试的隐蔽性和目标应用的稳定运行至关重要。
HttpURLConnection获取json数据解析
本篇将详细讲解如何使用HttpURLConnection获取JSON数据并进行解析。
基于Socket和HttpURLConnection的爬虫实例
在IT领域,网络爬虫是一种自动化程序,用于从互联网上抓取信息,构建索引,进行数据挖掘等任务。


Java SE
