问题描述
描述:我想连续抓取2000多组天气数据存储在文件中,使用代理IP和端口号,利用HttpURLConnection获取网络接口数据。问题:[b]1.单个抓取每一组数据都没有问题;2.抓取过程中间断开的地方每次不一样,有抓100多组数据后断开的也有1000多组后断开的;3.程序报异常:java.io.IOException:ServerreturnedHTTPresponsecode:502forURL:http://open.weather.com.cn/data/?areaid=101031400&type=forecast3d&date=201409110939&..................................但是URL是没问题的,每次断开地方也不一样。4.是否是网络原因导致中断?如果不能保证网络怎么能加强程序健壮性,让每次断开后还能继续抓取,直至2000多组数据抓取完毕?求指教~部分代码如下:(原来比这些简化,也没用post,后来看网上说的一步步加了一些setDoOutput、setDoInput、setConnectTimeout之类的,还是不行)[/b]publicStringgetURLContent(StringurlStr,Stringencode)throwsException{if(isProxyEnabled){Propertiesprop=System.getProperties();prop.setProperty("http.proxyHost",proxyHost);prop.setProperty("http.proxyPort",proxyPort);}URLurl=newURL(urlStr);HttpURLConnectionhttpConn=(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);DataOutputStreamout=newDataOutputStream(httpConn.getOutputStream());out.flush();out.close();//OutputStreamoutStrm=httpConn.getOutputStream();BufferedReaderbufReader;StringBuildercontentBuf=newStringBuilder(1024*100);try{bufReader=newBufferedReader(newInputStreamReader(httpConn.getInputStream(),encode));Stringline="";while((line=bufReader.readLine())!=null){contentBuf.append(line);}bufReader.close();}catch(Exceptione){e.printStackTrace();}httpConn.disconnect();returnnewString(contentBuf);}
解决方案
解决方案二:
解决方案三:
我也遇取天气的问题,有牛人帮忙解决一下么