我有一个接收 ArrayList 的方法。检查每个元素中的 url 以查看它是否连接。如果状态码不是 200,则将 url 添加到一个断开链接的计数中。正如你所看到的,我也打印了带有消息的 url 和 status 代码。
我想做的是对每个不是 200 的不同状态代码进行计数。
因此,我将获得断开链接的总数,以及非 200 状态代码的每个实例的计数。例如,如果有 5 个 404 的 http 状态,它们将被单独计算,任何其他状态代码也不是200。
我不想将每个状态代码作为计数变量硬编码到我的代码中,我想知道代码是否可以为每个不同的状态创建一个新的计数变量?
这是我目前的方法:
public static void LinkSorter(List x){
System.out.println("processing...");
int brokenLinkCount = 0;
for(int i=0; i<x.size();i++){
try{
URL url = new URL((String) x.get(i));
URLConnection conn = url.openConnection();
conn.connect();
HttpURLConnection httpCon = (HttpURLConnection)conn;
int statusCode = httpCon.getResponseCode();
String statusMessage = httpCon.getResponseMessage();
if(statusCode != 200){
System.out.println((String) x.get(i) + statusCode + statusMessage);
brokenLinkCount++;
}
catch(MalformedURLException e) {
System.out.println("MalformedURL Exception");
System.out.println(e.getMessage());
brokenLinkCount++;
} catch(IOException e){
System.out.println("IOException");
System.out.println(e.getMessage() + "IOException");
brokenLinkCount++;
}
}
if(brokenLinkCount == 0){
System.out.println("There are no broken links.");
}else if(brokenLinkCount == 1){
System.out.println("There is 1 broken link.");
}else{
System.out.println("There are " + brokenLinkCount + " broken links.");
}
}
}