java发送Http请求

简介: java发送Http请求
Http简介


http请求是采用TCP协议进行传输的,是一种超文本传输协议,可以实现客户端和服务端之间通信的请求响应协议,可以用来客户端和服务器之间传输数据,发动请求。


浏览器会向服务器发送请求,经过三次握手,建立通信,接着服务器向客户端返回响应;响应的内容包含响应头,响应内容等等。


常见的http请求一共有四种,分别是GET,POST,PUT,DELETE


发送http的工具


1.浏览器直接发送http请求


2.通过postman发送http请求


3.通过linux机器自带的命令curl来发送http请求


4.通过程序语言发送,比如java,C,C++,.net等语言


java语言发送HTTP请求

        httpClient = HttpClients.custom().build();
           HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
           requestFactory.setHttpClient(httpClient);
          RequestEntity<?> requestEntity = RequestEntity.post(new URI(url))
                .header(HttpHeaders.CONTENT_TYPE, App.APPLICATION_JSON_UTF8_VALUE)
                .body(request);

创建一个CloseableHttpClient对象,该对象的构造方法是私有的,我们可以直接调用custom方法来初始化该对象

2.png

该类是纸质链式变成,直接调用 build 方法创建 CloseableHttpClient 。创建一个 HttpComponentsClientHttpRequestFactory 对象,调用 setHttpCliet 方法发送。可以借助 RestTemplate 来发送post请求,RestTemplate是常见的调用http请求的工具类,支持私有化构建对象。

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
String responseBody = responseEntity.getBody();
logger.info("server response : {}", responseBody);
return objectMapper.readValue(responseEntity.getBody(), this.getJavaType(objectMapper, clazz));

借助JackJson将返回的json数据转化为JavaBean.JackJosn 不同于FastJson,是SpringBoot自带的框架,主要是借助ObjectMapper来进行一系列操作,可以调用configure方法增加不同的配置 DeserializationFeature常见的几种配置有


USE_JAVA_ARRAY_FOR_JSON_ARRAY


FAIL_ON_UNKNOWN_PROPERTIES


FAIL_ON_NULL_FOR_PRIMITIVES


FAIL_ON_NUMBERS_FOR_ENUMS


调用readValue方法将json数据转化为JavaBean


总结


Java发送HTTP请求总体不难,主要是分为三步


1.创建一个HttpComponentsClientHttpRequestFactory


2.调用 RestTemplate.exchange方法发送请求


3.利用Json转化器(FastJson或者是JackJson)将Json数据转化为JavaBean.


量变引起质变!


相关文章
|
29天前
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
75 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
8天前
|
缓存 前端开发 API
|
14天前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
2天前
|
前端开发 JavaScript Java
如何捕获和处理HTTP GET请求的异常
如何捕获和处理HTTP GET请求的异常
|
4天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
4天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
4天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
8天前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
14天前
|
网络协议
Lua中实现异步HTTP请求的方法
Lua中实现异步HTTP请求的方法
|
13天前
|
存储 安全 网络协议
HTTP 请求方法
【10月更文挑战第22天】HTTP 请求方法
26 2

热门文章

最新文章