HttpClient 4 API – Get the Status Code -getStatusLine().getStatusCode() Example
A quick guide to get the status code in the HttpClient API. getStatusLine().getStatusCode() Example and related errors.
1. Introduction
In this very quick tutorial, I will show how to get and validate the StatusCode of the HTTP Response using HttpClient 4.
2. Maven Dependencies
The following jars are required to run this HttiClient application.
commons-logging is internally is being used by other jars. Please do not forget to add these jars else you will get compile-time and runtime errors.
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.13</version> </dependency>
Error:
If you miss commons-logging jar then below exception will be produced.
1 2 3 4 5 6 7 8 9 | Exception in thread "main" 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. Retrieve the Status Code from the Http Response
Once the HTTP Request is sent and after processing response will be sent back to the caller.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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 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); } } } |
The returned response type of org.apache.http.HttpResponse which allows us to get the status of execution of the request. getStatusLine() method returns StatusLine object which holds the status of the request. use
getStatusCode() to get only execution code.
Output:
1 2 | response.getStatusLine() :: HTTP/ 1.1 200 OK Status Code : 200 |
4. Exception if URL is down
If the given URL is down or wrong then we will get UnknownHostException runtime exception.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 | Exception in thread "main" 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. Conclusion
In this article, We’ve seen how to get the status code for a HttpClient request.
As usual, The example shown in this article is on Github.
Published on Java Code Geeks with permission by Venkatesh, partner at our JCG program. See the original article here: HttpClient 4 API – Get the Status Code – getStatusLine().getStatusCode() Example Opinions expressed by Java Code Geeks contributors are their own. |