如何在Java中获取URL的HTTP响应代码?
请告诉我获取特定URL响应代码的步骤或代码。: 这绝不是一个有力的例子;您需要处理如何在Java中获取URL的HTTP响应代码?,java,http,http-status-codes,Java,Http,Http Status Codes,请告诉我获取特定URL响应代码的步骤或代码。: 这绝不是一个有力的例子;您需要处理IOExceptions等等。但这应该让你开始 如果您需要更强大的功能,请查看。您可以尝试以下方法: class ResponseCodeCheck { public static void main (String args[]) throws Exception { URL url = new URL("http://google.com"); HttpUR
IOException
s等等。但这应该让你开始
如果您需要更强大的功能,请查看。您可以尝试以下方法:
class ResponseCodeCheck
{
public static void main (String args[]) throws Exception
{
URL url = new URL("http://google.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
System.out.println("Response code of the object is "+code);
if (code==200)
{
System.out.println("OK");
}
}
}
。
.
.
.
.
.
这就是我的工作原理:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class UrlHelpers {
public static int getHTTPResponseStatusCode(String u) throws IOException {
URL url = new URL(u);
HttpURLConnection http = (HttpURLConnection)url.openConnection();
return http.getResponseCode();
}
}
希望这对某人有所帮助:)这对我很有用:
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.HttpResponse;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public static void main(String[] args) throws Exception {
HttpClient client = new DefaultHttpClient();
//args[0] ="http://hostname:port/xyz/zbc";
HttpGet request1 = new HttpGet(args[0]);
HttpResponse response1 = client.execute(request1);
int code = response1.getStatusLine().getStatusCode();
try(BufferedReader br = new BufferedReader(new InputStreamReader((response1.getEntity().getContent())));){
// Read in all of the post results into a String.
String output = "";
Boolean keepGoing = true;
while (keepGoing) {
String currentLine = br.readLine();
if (currentLine == null) {
keepGoing = false;
} else {
output += currentLine;
}
}
System.out.println("Response-->"+output);
}
catch(Exception e){
System.out.println("Exception"+e);
}
}
您可以使用java http/https url连接从网站获取响应代码和其他信息。下面是一个示例代码
try {
url = new URL("https://www.google.com"); // create url object for the given string
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if(https_url.startsWith("https")){
connection = (HttpsURLConnection) url.openConnection();
}
((HttpURLConnection) connection).setRequestMethod("HEAD");
connection.setConnectTimeout(50000); //set the timeout
connection.connect(); //connect
String responseMessage = connection.getResponseMessage(); //here you get the response message
responseCode = connection.getResponseCode(); //this is http response code
System.out.println(obj.getUrl()+" is up. Response Code : " + responseMessage);
connection.disconnect();`
}catch(Exception e){
e.printStackTrace();
}
通过扫描仪获取数据(负载不均匀)的有效方法
public static String getResponseFromHttpUrl(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\A"); // Put entire content to next token string, Converts utf8 to 16, Handles buffering for different width packets
boolean hasInput = scanner.hasNext();
if (hasInput) {
return scanner.next();
} else {
return null;
}
} finally {
urlConnection.disconnect();
}
}
试试这段代码,它正在检查400条错误消息
huc = (HttpURLConnection)(new URL(url).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if(respCode >= 400) {
System.out.println(url+" is a broken link");
} else {
System.out.println(url+" is a valid link");
}
这是完全静态的方法,您可以在IOException发生时对其进行调整以设置等待时间和错误代码:
public static int getResponseCode(String address) {
return getResponseCode(address, 404);
}
public static int getResponseCode(String address, int defaultValue) {
try {
//Logger.getLogger(WebOperations.class.getName()).info("Fetching response code at " + address);
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000 * 5); //wait 5 seconds the most
connection.setReadTimeout(1000 * 5);
connection.setRequestProperty("User-Agent", "Your Robot Name");
int responseCode = connection.getResponseCode();
connection.disconnect();
return responseCode;
} catch (IOException ex) {
Logger.getLogger(WebOperations.class.getName()).log(Level.INFO, "Exception at {0} {1}", new Object[]{address, ex.toString()});
return defaultValue;
}
}
这是一个老问题,但让我们用其他方式(JAX-RS)来说明:
看这个:我不会说重复,因为他想要响应代码,但是@Ajit无论如何你应该检查一下。再加上一点实验,你就可以开始了,而不是要求别人为你工作。请证明您至少已尝试独自完成此任务。显示您当前的代码以及您如何尝试完成此任务。如果你想让一个人为你工作而不费吹灰之力,你可以雇佣一个人并支付报酬。他有什么要求?当他不知道该做什么时,他请求帮助,而不是转动轮子。他使用的是社区,因为它是有意的。+1是更简洁(但功能齐全)的例子。很好的示例URL():)在线程“main”java.net中获取异常。ConnectException:连接被拒绝:连接我不知道为什么会获取此消息。只是脱离主题,我正在尝试了解连接可以生成的所有响应代码-是否有文档?如何使用基本身份验证检查此URL加上一个在我的特定情况下建议URL,使用您的方法,我会得到一个IOException(“无法使用代理进行身份验证”),这通常是http错误407。有没有一种方法可以获得getRespondeCode()方法引发的异常的精度(http错误代码)?顺便说一下,我知道如何处理我的错误,我只想知道如何区分每个异常(或者至少是这个特定的异常)。谢谢。@grattmandu03-我不确定。看起来你遇到了(不幸的是没有答案)。您可以尝试使用更高级别的框架,如HttpClient,这可能会让您对如何处理这样的响应有更多的控制。好的,谢谢您的回答。我的工作是修改一个旧代码来使用这个代理,修改越少,客户就会越了解我的工作。但我想,这是我(现在)做我想做的事情的唯一方法。无论如何,谢谢。您需要在finally块中调用disconnect()吗?这可能取决于,我会做一些研究。如果持续连接当时处于空闲状态,则调用
disconnect()
方法可能会关闭底层套接字,但这并不保证。文档还指出,在不久的将来,不太可能向服务器发出其他请求。调用disconnect()
不应意味着此HttpURLConnection
实例可用于其他请求。如果您正在使用InputStream
读取数据,则应close()
在finally
块中读取该流。在线程“main”java.net中获取异常。连接异常:连接被拒绝:连接。我不知道这个原因,我们如何用基本的认证来处理URL?这根本不能回答这个问题。太完美了。即使URL中存在重定向,也可以正常工作
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.HttpResponse;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public static void main(String[] args) throws Exception {
HttpClient client = new DefaultHttpClient();
//args[0] ="http://hostname:port/xyz/zbc";
HttpGet request1 = new HttpGet(args[0]);
HttpResponse response1 = client.execute(request1);
int code = response1.getStatusLine().getStatusCode();
try(BufferedReader br = new BufferedReader(new InputStreamReader((response1.getEntity().getContent())));){
// Read in all of the post results into a String.
String output = "";
Boolean keepGoing = true;
while (keepGoing) {
String currentLine = br.readLine();
if (currentLine == null) {
keepGoing = false;
} else {
output += currentLine;
}
}
System.out.println("Response-->"+output);
}
catch(Exception e){
System.out.println("Exception"+e);
}
}
try {
url = new URL("https://www.google.com"); // create url object for the given string
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if(https_url.startsWith("https")){
connection = (HttpsURLConnection) url.openConnection();
}
((HttpURLConnection) connection).setRequestMethod("HEAD");
connection.setConnectTimeout(50000); //set the timeout
connection.connect(); //connect
String responseMessage = connection.getResponseMessage(); //here you get the response message
responseCode = connection.getResponseCode(); //this is http response code
System.out.println(obj.getUrl()+" is up. Response Code : " + responseMessage);
connection.disconnect();`
}catch(Exception e){
e.printStackTrace();
}
public static String getResponseFromHttpUrl(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\A"); // Put entire content to next token string, Converts utf8 to 16, Handles buffering for different width packets
boolean hasInput = scanner.hasNext();
if (hasInput) {
return scanner.next();
} else {
return null;
}
} finally {
urlConnection.disconnect();
}
}
huc = (HttpURLConnection)(new URL(url).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if(respCode >= 400) {
System.out.println(url+" is a broken link");
} else {
System.out.println(url+" is a valid link");
}
public static int getResponseCode(String address) {
return getResponseCode(address, 404);
}
public static int getResponseCode(String address, int defaultValue) {
try {
//Logger.getLogger(WebOperations.class.getName()).info("Fetching response code at " + address);
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000 * 5); //wait 5 seconds the most
connection.setReadTimeout(1000 * 5);
connection.setRequestProperty("User-Agent", "Your Robot Name");
int responseCode = connection.getResponseCode();
connection.disconnect();
return responseCode;
} catch (IOException ex) {
Logger.getLogger(WebOperations.class.getName()).log(Level.INFO, "Exception at {0} {1}", new Object[]{address, ex.toString()});
return defaultValue;
}
}
import java.util.Arrays;
import javax.ws.rs.*
(...)
Response response = client
.target( url )
.request()
.get();
// Looking if response is "200", "201" or "202", for example:
if( Arrays.asList( Status.OK, Status.CREATED, Status.ACCEPTED ).contains( response.getStatusInfo() ) ) {
// lets something...
}
(...)