在HttpClient API中获取状态代码的快速指南。 getStatusLine()。getStatusCode()示例和相关的错误。

1.简介

在这个非常快速的教程中,我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。

2. Maven依赖

要运行此HttiClient应用程序,需要以下jar。

commons-logging在内部被其他jar使用。 请不要忘记添加这些jar,否则会出现编译时和运行时错误。

<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>

错误:

如果您错过了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

HttpClient 4 API –获取状态码-getStatusLine()。getStatusCode()示例相关推荐

  1. HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例

    在HttpClient API中获取状态代码的快速指南. getStatusLine().getStatusCode()示例和相关的错误. 1.简介 在这个非常快速的教程中,我将展示如何使用HttpC ...

  2. php访问获取全部网站状态码,php打开其他网站获取状态码

    php打开其他网站获取状态码? php获取http状态码程序代码 经常需要判断文件是否可以访问,可以通过http状态码判别,200为正常访问,404为找不到该页面,代码如下<?php // 设置 ...

  3. 趣说API HTTP 状态码的使用

    在设计API HTTP 状态码的时候,我们总能听到两种声音: 第一种,也是大家最常用的: 所有接口的状态码都返回 200,然后在自定义错误码: # 正确响应 {"code: 200,&quo ...

  4. 关于 RESTful API HTTP状态码

    关于 RESTful API 中 HTTP 状态码的定义 其中 2XX/3XX 其实都是请求成功,但是结果不同.4XX 是请求出错,5XX 是服务器处理出现错误. 200 这个最容易理解,就是正确的请 ...

  5. 关于Restful API与状态码的设计

    一.API 1. 传输协议 采用HTTP JSON通讯协议 2. API版本控制 将API得版本号放入URL,http://api.example.com/v{n}/ v{n} n代表版本号,使用整形 ...

  6. python模拟点击后获取状态码_Python获取网页状态码

    在网页爬取的时候,有时候需要判断下要爬取网页的网页HTTP状态码,然后再进行相关的工作. 1.网页HTTP状态码 HTTP状态码表示HTTP协议所返回的响应状态.具体参考:http://baike.b ...

  7. 南邮Android Studio应用高德地图API获取SHA1码

    这两天在做安卓实验,其中涉及到了高德地图API的使用,我在使用过程中发现输出结果为MD5验证失败,寻路失败的问题(忘记截图了).然后我个人就去查阅高德地图API的官方文档,也没查出个所以然,最后依靠C ...

  8. python获取状态码_Python 如何获取接口返回的http状态码

    使用request 模块得到返回值,然后再利用status_code属性获取http响应的状态码. 示例代码: import requests import json url = 'http://de ...

  9. 通达信交易接口API获取数据源码分享

    在通达信交易接口下单之前,如何去了解快速获取交易数据呢?要是即使下单了,也不知道如何去查询,然后不管不问,等到需要你去止损了,你才回想起来去操作,这是很容易吃亏的做法的.在股票量化交易过程中,我们不仅 ...

最新文章

  1. 手机无法配置exchange客户端的解决方法
  2. matlab中的神经网络训练,MATLAB中的神经网络训练
  3. 特斯拉标准续航版Model Y为什么下架?马斯克这么回答
  4. 三星S10+真机上手视频流出:屏下指纹让强迫症不忍直视
  5. 可输入可选择的input
  6. 图解HTTP笔记(一)
  7. 批量注册windows下的动态库
  8. 模板匹配之zernike矩
  9. Linux下C++可视化调试神器vgdb
  10. linux 时间戳计数器,用时间戳计数器测量频率的方法(下)-测试测量-与非网
  11. 开局一张图帮你充分理解哈希表(散列表)
  12. 最佳平方逼近 matlab,matlab最佳平方逼近
  13. 招商银行信用卡中心信息技术部实习总结
  14. Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明
  15. php5.5.30 redis dll,php_redis.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  16. php7随机数random_int()
  17. 华为nova4e能更新鸿蒙吗,华为nova4e禁止系统更新的方法_怎么关闭和禁用系统更新功能...
  18. 【渝粤教育】国家开放大学2018年秋季 0686-21T广告创意与表现(一) 参考试题
  19. R可视乎 | 散点图系列(2)
  20. 如何在零件层隐藏/显示SOLIDWORKS尺寸?

热门文章

  1. P1038-神经网络【拓扑排序】
  2. 背包例题の01,完全,多重
  3. 【做题记录】统计区间(哈希/扫描线)
  4. HHKB Programming Contest 2020 总结
  5. HDU5120 - Intersection
  6. 8、play框架中持久层操作
  7. MySQL 调优/优化的 101 个建议!
  8. 利用redis保存验证码并设置过期时间
  9. 单例模式懒汉式(线程安全写法)
  10. mod auth mysql_Apache使用mysql认证用户