跳过“;java.net.ConnectException:Connection;HttpURLConnection在getResponseCode上返回错误
我有个问题。我有一个跳过“;java.net.ConnectException:Connection;HttpURLConnection在getResponseCode上返回错误,java,connection,httpresponse,httpwebresponse,Java,Connection,Httpresponse,Httpwebresponse,我有个问题。我有一个CSV文件,其中包含url(~12000)个响应代码我需要检查。我的程序已经逐个检查了url。但在34次迭代之后,我的代码每次都会下降。第34行的URL不存在。如何将代码修改为下次遇到此错误程序跳过一个并继续工作。 我写了一段代码: 包lt.local import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.C
CSV
文件,其中包含url
(~12000)个响应代码我需要检查。我的程序已经逐个检查了url
。但在34次迭代之后,我的代码每次都会下降。第34行的URL不存在。如何将代码修改为下次遇到此错误程序跳过一个并继续工作。
我写了一段代码:
包lt.local
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
public class OffersUrlChecker {
private static final String SAMPLE_CSV_FILE_PATH = "d:\\LENAL\\ZUD\\load\\offers.csv";
public static void main(String[] args) throws IOException {
try (
Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH));
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)
){
Iterable<CSVRecord> csvRecords = csvParser.getRecords();
for (CSVRecord csvRecord : csvRecords) {
String url = csvRecord.get(0);
URL myUrl = new URL(url);
HttpURLConnection myUrlCon = (HttpURLConnection) myUrl.openConnection();
int code = myUrlCon.getResponseCode();
System.out.println(csvRecord.getRecordNumber()+" - "+code+" " + url);
}
}/*catch (ConnectException e){
System.out.println("java.net.ConnectException: Connection refused: connect");
}*/
}
}
import org.apache.commons.csv.CSVFormat;
导入org.apache.commons.csv.CSVParser;
导入org.apache.commons.csv.CSVRecord;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.Reader;
导入java.net.ConnectException;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.nio.file.Files;
导入java.nio.file.path;
公共类OfferUrlChecker{
私有静态最终字符串示例\u CSV\u文件\u PATH=“d:\\LENAL\\ZUD\\load\\offers.CSV”;
公共静态void main(字符串[]args)引发IOException{
试一试(
Reader Reader=Files.newbuffereder(PATH.get(SAMPLE_CSV_FILE_PATH));
CSVParser CSVParser=新的CSVParser(读卡器,CSVFormat.DEFAULT)
){
Iterable csvRecords=csvParser.getRecords();
用于(CSVRecord CSVRecord:CSVRecord){
字符串url=csvRecord.get(0);
URL myUrl=新URL(URL);
HttpURLConnection myUrlCon=(HttpURLConnection)myUrl.openConnection();
int code=myUrlCon.getResponseCode();
System.out.println(csvRecord.getRecordNumber()+“-”+代码+”+url);
}
}/*捕获(连接异常){
System.out.println(“java.net.ConnectException:connect拒绝:connect”);
}*/
}
}
线程“main”java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:589)
位于sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673)
位于sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
位于sun.net.NetworkClient.doConnect(NetworkClient.java:180)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
在sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:264)
位于sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1546)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
位于java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
位于sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
位于lt.zudykkaina.OffersUrlChecker.main(OffersUrlChecker.java:29)
进程已完成,退出代码为1
克服此问题的三条建议:
public class OffersUrlChecker {
private static final String SAMPLE_CSV_FILE_PATH = "d:\\LENAL\\ZUD\\load\\offers.csv";
public static void main(String[] args) throws IOException {
try (
Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH));
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)
) {
Iterable<CSVRecord> csvRecords = csvParser.getRecords();
for (CSVRecord csvRecord : csvRecords) {
String url = csvRecord.get(0);
URL myUrl = new URL(url);
HttpURLConnection myUrlCon = null;
try {
myUrlCon = (HttpURLConnection) myUrl.openConnection();
int code = myUrlCon.getResponseCode();
System.out.println(csvRecord.getRecordNumber() + " - " + code + " " + url);
} catch (Exception e) {
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.SEVERE,
String.format("Could not read from %s", url), e);
// sleep a bit
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e1) {
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.WARNING,
"Sleep interrupted", e);
}
} finally {
if (myUrlCon != null) {
myUrlCon.disconnect(); // Make sure you close the sockets
}
}
}
}
}
}
公共类OfferUrlChecker{
私有静态最终字符串示例\u CSV\u文件\u PATH=“d:\\LENAL\\ZUD\\load\\offers.CSV”;
公共静态void main(字符串[]args)引发IOException{
试一试(
Reader Reader=Files.newbuffereder(PATH.get(SAMPLE_CSV_FILE_PATH));
CSVParser CSVParser=新的CSVParser(读卡器,CSVFormat.DEFAULT)
) {
Iterable csvRecords=csvParser.getRecords();
用于(CSVRecord CSVRecord:CSVRecord){
字符串url=csvRecord.get(0);
URL myUrl=新URL(URL);
HttpURLConnection myUrlCon=null;
试一试{
myUrlCon=(HttpURLConnection)myUrl.openConnection();
int code=myUrlCon.getResponseCode();
System.out.println(csvRecord.getRecordNumber()+“-”+代码+”+url);
}捕获(例外e){
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.SEVERE,
格式(“无法从%s中读取”,url),e);
//睡一会儿
试一试{
时间单位。秒。睡眠(10);
}捕捉(中断异常e1){
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.WARNING,
“睡眠中断”,e);
}
}最后{
如果(myUrlCon!=null){
myUrlCon.disconnect();//确保关闭套接字
}
}
public class OffersUrlChecker {
private static final String SAMPLE_CSV_FILE_PATH = "d:\\LENAL\\ZUD\\load\\offers.csv";
public static void main(String[] args) throws IOException {
try (
Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH));
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)
) {
Iterable<CSVRecord> csvRecords = csvParser.getRecords();
for (CSVRecord csvRecord : csvRecords) {
String url = csvRecord.get(0);
URL myUrl = new URL(url);
HttpURLConnection myUrlCon = null;
try {
myUrlCon = (HttpURLConnection) myUrl.openConnection();
int code = myUrlCon.getResponseCode();
System.out.println(csvRecord.getRecordNumber() + " - " + code + " " + url);
} catch (Exception e) {
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.SEVERE,
String.format("Could not read from %s", url), e);
// sleep a bit
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e1) {
Logger.getLogger(OffersUrlChecker.class.getName()).log(Level.WARNING,
"Sleep interrupted", e);
}
} finally {
if (myUrlCon != null) {
myUrlCon.disconnect(); // Make sure you close the sockets
}
}
}
}
}
}