HttPClient简介及示例:学习如何与Web服务器进行通信

news2024/11/16 1:52:09

文章目录

  • 前言
  • 一、引入依赖
  • 二、使用步骤
  • 1.创建被调用者
  • 2.创建调用者
  • 三、结果
    • 被调用者服务:
    • 调用者服务:
  • 总结


前言

欢迎来到本篇博客,这是一个关于HttPClient的入门案例的指南。🎉
在今天的网络世界中,与服务器进行数据交互是开发应用程序的一个关键部分。
HttPClient是一款强大而灵活的工具,它帮助我们轻松发送和接收HTTP请求,并与各种Web服务器进行通信。
本文旨在为初学者提供一个简明扼要的入门指南,让您快速掌握HttPClient的基本知识和使用方法。🚀
我们将逐步引导您通过实际示例,展示如何使用HttPClient发送GET和POST请求,处理请求和响应,
以及其他一些常见的HTTP操作。
不管您是想开发一个支持远程数据交换的应用程序,还是想了解更多关于HttPClient的信息,
本篇博客都将为您提供有价值的知识和实际操作经验!!!💡
在开始之前,请确保您已经具备基本的Java编程知识和对HTTP协议的基本了解。
现在就让我们一起进入HttPClient的精彩世界,开始您的学习之旅吧!💪💻


一、引入依赖

如果您使用的是Maven项目,您可以使用以下依赖项将所需的类库添加到您的pom.xml文件中:

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

二、使用步骤

1.创建被调用者

创建一个项目,设置端口

server.port=8081

在项目下创建实体类User.java

import lombok.Data;

@Data
public class User {
    private String userName;
    private String passWord;
}

在项目下创建类webTest .java,供调用者调用

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class webTest {
    @GetMapping("/aa")
    public String aa(){
        return "成功";
    }
    @PostMapping("/bb")
    public String bb(@RequestBody User user){
        System.out.println(user);
        return "成功";
    }
}

2.创建调用者

重新创建一个项目,设置端口

server.port=8080

在项目创建测试类,调用被调用者服务

    /**
     * 测试通过httpclient发送GET方式的请求
     */
    @Test
    public void testGET() throws Exception{
        //创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        //创建请求对象
        HttpGet httpGet = new HttpGet("http://localhost:8081/aa");

        //发送请求,接受响应结果
        CloseableHttpResponse response = httpClient.execute(httpGet);

        //获取服务端返回的状态码
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("服务端返回的状态码为:" + statusCode);

        HttpEntity entity = response.getEntity();
        String body = EntityUtils.toString(entity);
        System.out.println("服务端返回的数据为:" + body);

        //关闭资源
        response.close();
        httpClient.close();
    }


    /**
     * 测试通过httpclient发送POST方式的请求
     */
    @Test
    public void testPOST() throws Exception{
        // 创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        //创建请求对象
        HttpPost httpPost = new HttpPost("http://localhost:8081/bb");

        // 构造json格式字符串
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("userName","admin");
        jsonObject.put("passWord","123456");
        StringEntity entity = new StringEntity(jsonObject.toString());

        //指定请求编码方式
        entity.setContentEncoding("utf-8");
        //数据格式
        entity.setContentType("application/json");
        httpPost.setEntity(entity);

        //发送请求
        CloseableHttpResponse response = httpClient.execute(httpPost);

        //解析返回结果
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("响应码为:" + statusCode);

        HttpEntity entity1 = response.getEntity();
        String body = EntityUtils.toString(entity1);
        System.out.println("响应数据为:" + body);

        //关闭资源
        response.close();
        httpClient.close();
    }

三、结果

被调用者服务:

在这里插入图片描述
成功被成功调用

调用者服务:

在这里插入图片描述
成功获取响应结果

总结

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘导论学习笔记1(第1 、2章)

参考&#xff1a;https://blog.csdn.net/u013232035/article/details/48281659?spm1001.2014.3001.5506 和《数据挖掘导论》学习笔记&#xff08;第1-2章&#xff09;_时机性样本_schdut的博客-CSDN博客 第1章 绪论 数据挖掘是一种技术&#xff0c;它将传统的数据分析方法…

【LeetCode】剑指 Offer <二刷>(4)

目录 题目&#xff1a;剑指 Offer 09. 用两个栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 10- I. 斐波那契数列 - 力扣&am…

FFmpeg5.0源码阅读——FFmpeg大体框架(以GIF转码为示例)

摘要&#xff1a;前一段时间熟悉了下FFmpeg主流程源码实现&#xff0c;对FFmpeg的整体框架有了个大概的认识&#xff0c;因此在此做一个笔记&#xff0c;希望以比较容易理解的文字描述FFmpeg本身的结构&#xff0c;加深对FFmpeg的框架进行梳理加深理解&#xff0c;如果文章中有…

ROS机器人编程---------(二)ROS中的核心概念

ROS机器人编程 ROS中的核心概念 ROS的通信机制 在ROS中结点是最小单元&#xff0c;比如说机器人的遥控器可以作为一个控制结点&#xff0c;机器人上的摄像头也可以看作一个结点&#xff0c;ROS通过协调各个结点来实现 在启动任何ROS结点之前&#xff0c;都必须先启动ROS Mas…

【数据结构】 二叉树面试题讲解->贰

文章目录 &#x1f30f;引言&#x1f384;[二叉树遍历](https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking)&#x1f431;‍&#x1f464;题目描述&#…

阿里云短信服务测试

测试时遇到下面的错误; {"Message":"测试专用签名和模板必须结合使用","RequestId":"59035729-FD2A-5618-A2BE-6CABD839B400","Code":"isv.SMS_TEST_SIGN_TEMPLATE_LIMIT"} 上网查了下才发现&#xff1a; 使用…

一些自己整理的工具实用参数

工具实用参数 sqlmap -u: 指定需要测试的目标URL&#xff08;格式&#xff1a;http://www.example.com/test.php?id1&#xff09; --cookie: 设置需要发送的 HTTP Cookie&#xff0c;例如&#xff1a;--cookie"sid123456;PHPSESSID654321" --threads&#xff1a;…

化学中的各种基团(羧基、酰胺、吡喃、联苯结构)

一、羧基 化学式–C(O)OH&#xff0c;是羧酸所具有的官能团。一般而言&#xff0c;羧基上的氢有较大的电离倾向&#xff0c;从而使羧酸在水溶液中显酸性。羧酸根负离子所具有共轭结构可以看作是氢易电离的潜在动力。 二、羟基 化学式&#xff0d;OH&#xff0c;是氧原子以共价…

nginx的配置文件

nginx的配置文件 一、nginx配置文件1.1、主配置文件详解1.2、子配置文件 二、修改启动程序的全局配置2.1、修改启动的工作进程数优化2.2、cpu与eorker process绑定优化2.3、PID路径优化2.4、修改工作进程的优先级 优化2.5、调试工作进程打开文件的文件个数2.5.1、基本原理2.5.2…

ac7260网卡不能连5g

之前路由器是双频&#xff0c;最近为了连物联网一堆&#xff0c;把双频拆成两个wifi 结果电脑上装的pdd网卡就罢工了&#xff0c;连4g可以&#xff0c;但是连5g网络就不行&#xff0c;连上却没网&#xff0c;导致网盘下东西慢。刚开始以为是tplink的易展问题&#xff0c;结果看…

Python Opencv实践 - 凸包检测(ConvexHull)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_contour img.copy() #得到灰度图做Canny边缘检测 img_gray cv.cvtColor(img_contour, cv.COLOR_BGR2GRAY) edges…

Python将多个文件的名称或后缀名由大写字母修改为小写的方法

本文介绍基于Python语言&#xff0c;基于一个大文件夹&#xff0c;遍历其中的多个子文件夹&#xff0c;并对于每一个子文件夹中的大量文件&#xff0c;批量将其文件的名称或后缀名中的字母由大写修改为小写的方法。 本文期望实现的需求为&#xff1a;现有一个大文件夹&#xff…

netcat的使用

目录 netcat简介 nc的使用场景 nc实现通信 创建一个服务端 创建一个客户端 具体案例 环境 win10在具体路径下执行命令 win7在具体路径下执行命令 netcat文件传输 nc文件传输的利用 服务器等待接收文件 客户端向服务器发送文件 服务器向连接的客户端发送文件 客户…

内网隧道代理技术(二十)之 CS使用HTTP代理上线不出网机器

CS使用HTTP代理上线不出网机器 CS工具自带上线不出网机器 如图A区域存在一台中转机器,这台机器可以出网,这种是最常见的情况。我们在渗透测试的过程中经常是拿下一台边缘机器,其有多块网卡,边缘机器可以访问内网机器,内网机器都不出网。这种情况下拿这个边缘机器做中转,…

OpenSIPS 管理接口的对接

文章目录 1. 背景2. OpenSIPS 的 HTTP 管理接口对接2.1 脚本配置2.2 请求方式 1. 背景 OpenSIPS 是功能完善的开源 SIP 代理服务器&#xff0c;它在支持 SIP 代理的主要功能以外&#xff0c;也为使用者提供了一套 MI 管理接口。面向不同的通信方式&#xff0c;OpenSIPS 还提供…

训练简单的线性模型,预测电影评分和票房收入

文章目录 训练简单的线性模型&#xff0c;预测电影评分和票房收入数据集加载数据可视化数据分割数据集训练模型可视化结果应用模型保存和加载模型 训练简单的线性模型&#xff0c;预测电影评分和票房收入 这是一个简单的线性模型&#xff0c;用于预测电影的评分和票房收入。不…

Mysql 性能分析(慢日志、profiling、explain)、读写分离(主从架构)、分库分表(垂直分库、垂直分表、水平分表)

查看系统性能参数 一条sql查询语句在执行前&#xff0c;需要确定查询执行计划&#xff0c;如果存在多种执行计划的话&#xff0c;mysql会计算每个执行计划所需要的成本&#xff0c;从中选择 成本最小的一个作为最终执行的执行计划 想要查看某条sql语句的查询成本&#xff0c;可…

【LeetCode算法系列题解】第21~25题

CONTENTS LeetCode 21. 合并两个有序链表&#xff08;简单&#xff09;LeetCode 22. 括号生成&#xff08;中等&#xff09;LeetCode 23. 合并K个升序链表&#xff08;困难&#xff09;LeetCode 24. 两两交换链表中的节点&#xff08;中等&#xff09;LeetCode 25. K 个一组翻转…

Python 中的类,包括self关键字、类的属性限制访问

Python 中的类 一 、类和对象1.概念2.写法&#xff1a; 二、 self用法详解1.self代表类的实例&#xff0c;而非类2.self可以不写吗&#xff1f;3.在继承时&#xff0c;self的使用。 三、 属性限制访问1. 系统定义2.保护类型成员3.私有类型成员 一 、类和对象 1.概念 类是封装…

房屋装修选择自装,如何寻找木工师傅,比价全屋定制和木工并施工(木工阶段)

环境&#xff1a; 地点&#xff1a;杭州 装修类型&#xff1a;自装 面积&#xff1a;建面135平方 进度&#xff1a;木工阶段 问题描述&#xff1a; 房屋装修选择自装&#xff0c;如何寻找木工师傅&#xff0c;比价全屋定制和木工并施工&#xff08;木工阶段&#xff09; …