首页 > 其他分享 >6.4. HttpClient

6.4. HttpClient

时间:2023-06-02 11:11:14浏览次数:55  
标签:HttpRequest java 6.4 HttpResponse import net HttpClient

1. 什么是HttpClient?

HttpClient是Java 11中引入的一个新特性,用于支持同步和异步发送HTTP请求以及处理HTTP响应。它提供了简单易用的API,使得发送HTTP请求变得非常简单。

2. HttpClient的主要组件

HttpClient由以下几个主要组件组成:

  • HttpClient:用于发送请求的主要类。
  • HttpRequest:表示一个HTTP请求。
  • HttpResponse:表示一个HTTP响应。

3. 发送GET请求

要使用HttpClient发送GET请求,可以创建一个HttpClient对象,然后创建一个HttpRequest对象并设置请求方法为GET。最后,使用HttpClient的send()方法发送请求并获取响应。以下是一个简单示例:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientGetExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();

            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. 发送POST请求

要使用HttpClient发送POST请求,可以创建一个HttpClient对象,然后创建一个HttpRequest对象并设置请求方法为POST。还需要设置请求体,例如表单数据或JSON数据。最后,使用HttpClient的send()方法发送请求并获取响应。以下是一个简单示例:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;

public class HttpClientPostExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            String postData = "username=user&password=pass";
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/login"))
                    .header("Content-Type", "application/x-www-form-urlencoded")
                    .POST(HttpRequest.BodyPublishers.ofString(postData))
                    .build();

            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5. 异步请求

HttpClient还支持异步发送HTTP请求。要发送异步请求,可以使用HttpClient的sendAsync()方法。以下是一个简单示例:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientAsyncExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();

            client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                    .thenApply(HttpResponse::body)
                    .thenAccept(System.out::println)
                    .join();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6. 自定义HttpClient

可以通过HttpClient.Builder类自定义HttpClient,例如设置超时、代理、重定向策略等。以下是一个简单示例,演示如何设置超时和代理:

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class CustomHttpClientExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newBuilder()
                    .connectTimeout(Duration.ofSeconds(5))
                    .proxy(ProxySelector.of(new InetSocketAddress("myproxy.example.com", 8080)))
                    .build();

            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();

            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

现在,您已经了解了Java的HttpClient的基本概念和用法。实际上,还有许多其他功能和配置可以探索。在实际项目中,您可能需要根据具体需求调整HttpClient的配置。希望这些示例能帮助您更好地理解Java网络编程中的HttpClient组件。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

标签:HttpRequest,java,6.4,HttpResponse,import,net,HttpClient
From: https://www.cnblogs.com/yaoqian/p/17451208.html

相关文章

  • 6.6.4 PCS创建Oracle 资源及资源组
    在RHCS体系中,Oracle的启动是按以下顺序进行的:VIP。监听器。逻辑卷(ISCSI共享出来的)。文件系统(在逻辑卷上创建)。数据库实例。上边这些资源,在PCS里创建好以后,将其组合成一个单独的资源组,形成一个不可分割的整体。1)PCS添加Oracle监听器资源Oracle的VIP资源在前边已经添加,那么接下来就......
  • C# HttpClient(包含Post和Get)
    usingNewtonsoft.Json;usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Net;usingSystem.Net.Http;usingSystem.Net.Http.Headers;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Xml.Serializat......
  • Centos7安装高版本BIND9.16.41(DNS服务器)
    安装高版本BIND9.16.41或9.18.15双数版本为稳定版如9.16、9.18找到BIND官网:https://www.isc.org/download/#BIND1、点击Download:这里以9.16.41版本为例2、打开CentOS系统3、跳转到官方文档,找到EPEL源,复制链接更换源,并安装cd/etc/yum.repos.drm-rf/etc/yum.repos.......
  • .Net使用HttpClient以multipart/form-data形式post上传文件及其相关参数
    httpClient模仿Postman的form-data格式 api接口[HttpPost(Name="/Test/FileTest")]publicJGResponse<PutFileByNameResponse>FileTest([FromForm]PutFileByNameRequestrequestDto){varcapthch=GetCaptcha();......
  • Java使用HttpClient以multipart/form-data向接口上传文件
    前言对接某公司的接口,涉及到资质上传等业务。需要对接他们的上传附件接口。JDK1.8httpclient4.x封装httpclient方法publicstaticStringpostFileMultiPart(Stringurl,Map<String,ContentBody>reqParam)throwsIOException{ CloseableHttpClienthttpclient=HttpCl......
  • C# HttpClient发送Get和Post请求
     HttpClient发送Get和Post请求 publicclassHttpHelper{///<summary>///发起POST同步请求//////</summary>///<paramname="url"></param>///<paramname="postData&q......
  • 放弃 okhttp、httpClient,选择了这个牛逼的神仙工具
    https://mp.weixin.qq.com/s?__biz=MzAxNjk4ODE4OQ%3D%3D&chksm=9beee439ac996d2f3163a57232cafd44e9142959b5452cc3428123017fc4254a7318e0c3b245&idx=1&mid=2247501131&scene=21&sn=bdafb376cfa57cf3109b099f3feed457#wechat_redirect 在SpringBoot项目直......
  • HttpClient连接池的连接淘汰策略分析,以及解决HttpNoResponse异常
    本文分析的apacheHttpClient版本为4.5在HttpClient连接池的使用中,发现有三处关于连接释放的时间配置PoolingHttpClientConnectionManager构造函数中的timeToLive,默认是-1publicPoolingHttpClientConnectionManager(finalRegistry<ConnectionSocketFactory>socke......
  • HTTP协议客户端之HttpClient介绍及使用
    1.HttpClient介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient相比JDK自带的URLConnection,增加了易用性和灵活性,使客户端发送Http请求变得更加容......
  • .net core HttpClient
    .netcoreHttpClient使用之掉坑解析(一)-Jlion-博客园(cnblogs.com) ......