HttpClient示例

HttpClient官网

HttpClient - HttpClient Home

每个对应版本都有 快速开始的示例

maven项目

pom依赖

<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.12</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

 

在测试类里测试

package com.example;


import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author hrui
 * @date 2023/11/17 12:35
 */
public class HttpClientTestTest{


    @Test
    public void testGet(){
        //发起get请求,编程方式处理http请求
        String url="https://restapi.amap.com/v3/ip?key=0113a13c88697dcea6a445584d535837&ip=60.25.188.64";
        //1.创建HttpClient对象
        CloseableHttpClient client= HttpClients.createDefault();
        //2.创建HttpGet对象
        HttpGet httpGet=new HttpGet(url);
        //httpGet.setHeader("token", "xxxxxx");可能对方网站需要某些校验的时候,在请求头设置值
        try{
            //3.执行请求,使用client对象的方法,执行请求后获取返回结果

            CloseableHttpResponse response = client.execute(httpGet);
            // 处理响应  200成功
            if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
                // 如果需要处理响应内容,可以在这里获取响应实体
//                HttpEntity responseEntity = response.getEntity();
//                InputStream content = responseEntity.getContent();//返回流原因是不只字符串  还有视频 音频 图片等等

                //如果确定是字符串也封装了对应方法
                String json = EntityUtils.toString(response.getEntity());
                System.out.println(json);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(client!=null){
                try {
                    client.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    @Test
    public void test02(){

            //1.创建HttpClient对象
            CloseableHttpClient client= HttpClients.createDefault();
            //2.创建HttpGet对象
            String url="https://restapi.amap.com/v3/ip";
            HttpPost httpPost=new HttpPost(url);

            //httpPost.setHeader("token", "xxxxxx");可能对方网站需要某些校验的时候,在请求头设置值
            //3.准备参数
            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
            nvps.add(new BasicNameValuePair("key", "0113a13c88697dcea6a445584d535837"));
            nvps.add(new BasicNameValuePair("ip", "60.25.188.64"));
        try {
            //4.设置使用参数
            httpPost.setEntity(new UrlEncodedFormEntity(nvps));//构建表单  name=xxx&password=xxx形式


//            httpPost.setHeader("Content-Type", "application/json");
//            // 设置请求体(如果有)
//            String requestBody = "{\"key\": \"value\"}";
//            httpPost.setEntity(new StringEntity(requestBody));//如果是JSON

            //5.执行请求
            CloseableHttpResponse response = client.execute(httpPost);

            if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                String s = EntityUtils.toString(response.getEntity());
                System.out.println(s);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(client!=null){
                try {
                    client.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/159493.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能指针面试题

智能指针被问到的概率还是很大的&#xff0c;特别是Shared_ptr&#xff0c;最好会手撕&#xff0c;亲身经历&#xff01; 基本概念 1. RAll RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源&#xff08;如内存、文…

(七)什么是Vite——vite优劣势、命令

vite分享ppt&#xff0c;感兴趣的可以下载&#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录&#xff1a; &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff0…

Python入门学习篇(一)——注释变量输入输出

1 注释 1.1 作用 a 方便他人和自己阅读代码 b 告诉编译器这部分内容是不用执行的。1.2 单行注释 # 注释内容1.3 多行注释(引号) 1.3.1 三对双引号 """ 注释内容 """1.3.2 三对单引号 注释内容 1.4 pycharm快捷键使用 ctrl/ 多行注释(以# …

挑战视觉边界,探索图形验证码背后的黑科技

在日常生活中&#xff0c;我们登录网站或者其他平台时&#xff0c;在填写完账号密码之后&#xff0c;还会让我们填写4或6位的数字或者英文字母等&#xff0c;填写正确才能请求登录。这个其实是防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试&#xff0c;如下…

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问&#xff0c;数智化既是这个时代前进所趋&#xff0c;也是国家战略所指&#xff0c;更是所有企业未来发展进程中达成的高度共识。 但也要看到&#xff0c;由于大量新兴技术的出现&#xff0c;技术热点不停的轮转&#xff0c;加上市场环境的快速变化&#xff0c;让数智化…

ThreadLocal优化

测试类证明一下ThreadLocal存储的数据是线程程安全的 package com.lin.springboot01;import org.junit.jupiter.api.Test;public class testThreadLocal {Testpublic void testThreadLocalSetAndGet(){//提供一个ThreadLocal对象ThreadLocal t1 new ThreadLocal();new Thread…

无重复最长字符串(最长无重复子字符串),剑指offer,力扣

目录 原题&#xff1a; 力扣地址&#xff1a; 我们直接看题解吧&#xff1a; 解题方法&#xff1a; 难度分析&#xff1a; 难度算中下吧&#xff0c;这个总体不算很难&#xff0c;而且滑动窗口&#xff0c;以及哈希都比较常见 审题目事例提示&#xff1a; 解题思路&#xff08;…

在QGIS中加载显示3DTiles数据

“我们最近有机会在QGIS 3.34中实现一个非常令人兴奋的功能–能够以“Cesium 3D Tiles”格式加载和查看3D内容&#xff01;” ——QGIS官方的 宣传介绍。 体验一下&#xff0c;感觉就是如芒刺背、如坐针毡、如鲠在喉。 除非我电脑硬件有问题&#xff0c;要么QGIS的3Dtiles是真…

【迅搜01】安装运行并测试XunSearch

安装运行并测试XunSearch 这回的新系列&#xff0c;我们将学习到的是一个搜索引擎 迅搜 XunSearch 的使用。这个搜索引擎在 PHP 圈可能还是有一点名气的&#xff0c;而且也是一直在更新的&#xff0c;虽说现在 ElasticSearch 已经是实际上的搜索引擎霸主了&#xff0c;而且还有…

用Java实现贪吃蛇小游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为贪吃蛇。 其次在贪吃蛇项目下创建一个名为images的文件夹用来存放游戏相关图片。 然后再在项目的src文件下创建一个com.xxx.view的包用来存放所有的图形界面类&#xff0c;创建一个com.xxx.controller的包用来存放启…

DeepMind发布新模型Mirasol3B:更高效处理音频、视频数据

Google DeepMind日前悄然宣布了其人工智能研究的重大进展&#xff0c;推出了一款名为“Mirasol3B”的新型自回归模型&#xff0c;旨在提升对长视频输入的理解能力。该新模型展示了一种颠覆性的多模态学习方法&#xff0c;以更综合和高效的方式处理音频、视频和文本数据。 Googl…

【自留地】后端 - PHP - MySQL - Nginx - Python - Java

PHP ThinkPHP6入门手册 【精选】【汇总】ThinkPHP6入门手册_tp6手册_Rudon滨海渔村的博客-CSDN博客文章浏览阅读5.4k次。安装安装Composer【win】https://getcomposer.org/Composer-Setup.exe【Linux & MacOS】curl -sS https://getcomposer.org/installer | phpmv compo…

Linux中的进程终止(详解)

Linux中的进程终止 1. 进程退出场景2. 进程常见退出方法2.1 _exit函数2.2 exit函数2.3 return退出 1. 进程退出场景 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果不正确代码异常终止 2. 进程常见退出方法 正常终止&#xff08;可以通过 echo $? 查看进程…

Hessian协议详解

前言 Hessian协议是一种基于二进制的轻量级远程调用协议&#xff0c;用于在分布式系统中进行跨语言的通信。它使用简单的二进制格式来序列化和反序列化数据&#xff0c;并支持多种编程语言&#xff0c;如Java、C#、Python等。Hessian协议相对于其他协议的优势在于其简单性和高…

字符串判断是否存在,存在去重

.includes() 方法判断是否存在 split("需要去掉的字符串").join(" ") 去重的方法 去重复 划分后拼接

类BERT模型蒸馏实战

机器学习模型已经变得越来越大&#xff0c;以至于训练模型可能会给那些没有空闲集群的人带来痛苦。 此外&#xff0c;即使使用训练好的模型&#xff0c;当你的硬件与模型对其运行的期望不符时&#xff0c;推理的时间和内存成本也会飙升。 因此&#xff0c;为了缓解这个问题&…

vue-组件通信(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信(二) 目录 组件通信(二) &#xff08;1&#xff09; props / $emit 1. 父组件向子组…

赋能汽车企业数智化转型,鼎捷软件受邀出席“中国工业软件大会”

由中国国际智能产业博览会组委会、工业和信息化部、重庆市人民政府主办的“第三届中国工业软件大会”在重庆盛大召开。工业软件主管部委及政府部门、产业上下游企业代表和业内大咖、科教领域专家学者等800余位嘉宾代表齐聚&#xff0c;为加快制造业数字化转型和高质量发展建言献…

Echarts 实现两两柱图重叠(背景和实际值柱图)

Echarts实现两两重叠柱状图_echarts 重叠柱状图_Web_阿凯的博客-CSDN博客 引用启发的博客 先来效果&#xff1a; option {backgroundColor: #03213D,animation: true, // 控制动画是否开启animationDuration: 1000, // 动画的时长, 它是以毫秒为单位animationDuration: func…

【Proteus仿真】【Arduino单片机】DS1302时钟

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS1302等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示时间日期。 二、软件设计 /* 作者&#xff1a;…