京东网站的建设与发展现状分析,WordPress图片关闭永久链接,莱西做网站,东莞企业网站建设在HttpClient API中获取状态代码的快速指南。 getStatusLine#xff08;#xff09;。getStatusCode#xff08;#xff09;示例和相关的错误。 1.简介 在这个非常快速的教程中#xff0c;我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要… 在HttpClient API中获取状态代码的快速指南。 getStatusLine。getStatusCode示例和相关的错误。 1.简介 在这个非常快速的教程中我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要运行此HttiClient应用程序需要以下jar。 commons-logging在内部被其他jar使用。 请不要忘记添加这些jar否则会出现编译时和运行时错误。 dependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version
/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.12/version
/dependencydependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpcore/artifactIdversion4.4.13/version
/dependency 错误 如果您错过了commons-logging jar则会产生以下异常。 Exception in thread main Exception in thread java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.http.conn.ssl.DefaultHostnameVerifier.init(DefaultHostnameVerifier.java: 82 ) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java: 966 ) at com.java.w3schools.blog.HttpClient.HttpClientGetStatusCode.main(HttpClientGetStatusCode.java: 21 ) Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java: 583 ) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java: 178 ) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java: 521 ) ... 3 more 3.从Http响应中检索状态代码 发送HTTP请求后经过处理后响应将发送回调用方。 package com.java.w3schools.blog.HttpClient; import java.io.IOException; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; public class HttpClientGetStatusCode { private static final String GOOGLE_URL http://www.google.com ; private static CloseableHttpClient instance; private static CloseableHttpResponse response; public static void main(String[] args) throws ClientProtocolException, IOException { HttpGet httpGet new HttpGet(GOOGLE_URL); instance HttpClientBuilder.create().build(); response instance.execute(httpGet); System.out.println( response.getStatusLine() :: response.getStatusLine()); final int statusCode response.getStatusLine().getStatusCode(); int code HttpStatus.SC_OK; if (code statusCode) { System.out.println( Status Code : code); } else { System.out.println( StatusCode not 200 : code); } } } 返回的响应类型为org.apache.http.HttpResponse 它使我们能够获取请求的执行状态。 getStatusLine方法返回保存请求状态的StatusLine对象。 采用 getStatusCode仅获取执行代码。 输出 response.getStatusLine() :: HTTP/ 1.1 200 OK Status Code : 200 4. URL断开时例外 如果给定的URL关闭或错误则我们将获得UnknownHostException运行时异常。 Exception in thread main Exception in thread java.net.UnknownHostException: www.google.com1: nodename nor servname provided, or not known at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java: 929 ) at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java: 1515 ) at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java: 848 ) at java.base/java.net.InetAddress.getAllByName0(InetAddress.java: 1505 ) at java.base/java.net.InetAddress.getAllByName(InetAddress.java: 1364 ) at java.base/java.net.InetAddress.getAllByName(InetAddress.java: 1298 ) at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java: 45 ) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java: 112 ) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java: 376 ) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java: 393 ) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java: 236 ) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java: 186 ) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java: 89 ) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java: 110 ) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java: 185 ) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java: 83 ) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java: 108 ) at com.java.w3schools.blog.HttpClient.HttpClientGetStatusCode.main(HttpClientGetStatusCode.java: 24 ) 5.结论 在本文中我们已经看到了如何获取HttpClient请求的状态代码 。 和往常一样本文显示的示例在Github上。 GitHub代码 翻译自: https://www.javacodegeeks.com/2020/04/httpclient-4-api-get-the-status-code-getstatusline-getstatuscode-example.html