IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Apache HttpComponents 简单使用 -> 正文阅读

[开发工具]Apache HttpComponents 简单使用


官网 https://hc.apache.org/httpcomponents-client-4.5.x/index.html

参考 https://www.cnblogs.com/lrzy/articles/15667814.html

一、简介

Apache Commons HttpClient(或被称为 Apache HttpClient 3.x)、Apache HttpComponents Client(或被称为 Apache HttpClient 4.x)

HttpComponents 项目就是专门设计来简化 HTTP 客户端与服务器进行各种通讯编程。

现在的 HttpComponents 包含多个子项目

HttpComponents Core、HttpComponents Client、HttpComponents AsyncClient、Commons HttpClient

主要的功能

  • 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
  • 支持自动转向
  • 支持 HTTPS 协议
  • 支持代理服务器等
  • 支持Cookie
1、导入依赖

最新版本 4.5.13

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

请求地址:http://127.0.0.1:8080/HttpClient/get/params?id=123456&name=admin

@Autowired
    HttpClientComponentsController httpClientComponentsController;

    @Test
    public void getMethod() throws IOException {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id", 123456);
        jsonObject.put("name", "admin");

        StringBuilder url = new StringBuilder("http://127.0.0.1:8080/HttpClient/get/params");
        url.append("?");
        for (String s : jsonObject.keySet()) {
            url.append(s).append("=").append(jsonObject.get(s)).append("&");
        }
        String substring = url.substring(0, url.length() - 1);
        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();

        CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(new HttpGet(substring));

        System.out.println(EntityUtils.toString(closeableHttpResponse.getEntity()));
    }

java 接口

    @GetMapping("/get/params")
    public JSONObject getParams(@RequestParam String id, @RequestParam("name") String userName){}

二、post 请求

1、post 请求传递 x-www-form-urlencoded 参数

请求地址:http://127.0.0.1:8080/HttpClient/post/params/x-www
在这里插入图片描述
UrlEncodedFormEntity 继承 StringEntity 构造方法默认 CONTENT_TYPE = "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" 所以传递参数可以在 url 后使用 & 拼接参数

    @Test
    public void getPost() throws IOException {
        String url = "http://127.0.0.1:8080/HttpClient/post/params/x-www";
        List<NameValuePair> form = new ArrayList<>();
        form.add(new BasicNameValuePair("name", "admin"));
        form.add(new BasicNameValuePair("password", "123456"));
        HttpEntity reqEntity = new UrlEncodedFormEntity(form, "utf-8");
        Header header = new BasicHeader("Connection", "Keep-Alive");
        RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(5000)
                .setConnectTimeout(5000)
                .setConnectionRequestTimeout(5000)
                .build();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(reqEntity);
        httpPost.setHeader(header);
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36");
        // 默认 Content-Type
        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;");
        httpPost.setConfig(requestConfig);
        HttpClient httpClient = HttpClients.custom().build();
        HttpResponse httpResponse = httpClient.execute(httpPost);
        System.out.println(EntityUtils.toString(httpResponse.getEntity()));
    }

java 接口

    @PostMapping("/post/params/x-www")
    public JSONObject postParams(String name, String password) {}
2、post/get 请求传递 json 参数

StringEntity 可以传递 json 参数,默认 CONTENT_TYPE = "text/plain; charset=ISO-8859-1“
请求地址:http://127.0.0.1:8080/HttpClient/post/params/json
在这里插入图片描述

    @Test
    public void getPostFormData() throws IOException {
        Map<String, Object> map = new HashMap<>();
        map.put("account", "admin");
        map.put("password", "123456");
        JSONObject jsonObject = new JSONObject(map);
        String url = "http://127.0.0.1:8080/HttpClient/post/params/json";
        StringEntity se = new StringEntity(jsonObject.toJSONString());
        se.setContentEncoding("UTF-8");
        se.setContentType("application/json");//发送json需要设置contentType
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(se);
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = httpClient.execute(httpPost);
        log.info(EntityUtils.toString(response.getEntity()));
    }

java 接口

    @PostMapping("/post/params/json")
    public JSONObject postParams(@RequestBody Map<String, Object> map) {}
3、post 请求传递 multipart/form-data 参数(含文件)

传递 multipart/form-data 参数需要导入 httpmime 依赖

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.13</version>
        </dependency>

请求地址:http://127.0.0.1:8080/okhttp3/post/params_from_async
在这里插入图片描述

    @Test
    public void getPostFormFile() throws IOException {
        File file = new File("C:\\Users\\Administrator\\Pictures\\小程序\\126.jpg");
        MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
        // 文件
        multipartEntityBuilder.addBinaryBody("file", file, ContentType.IMAGE_JPEG, "126.jpg");
        // 文本
        multipartEntityBuilder.addTextBody("name", "admin", ContentType.TEXT_PLAIN);
        multipartEntityBuilder.addTextBody("password", "123456", ContentType.TEXT_PLAIN);
        HttpEntity httpEntity = multipartEntityBuilder.build();
        String url = "http://127.0.0.1:8080/okhttp3/post/params_from_async";
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(httpEntity);
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = httpClient.execute(httpPost);
        log.info(EntityUtils.toString(response.getEntity()));
    }

java 接口

 @PostMapping("/post/params_from_async")
    public JSONObject postParamsFromAsync(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws InterruptedException, IOException, ServletException {}
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:46:03  更:2022-03-30 18:46:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:51:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码