HttpClient快速入门第1讲——手把手教你快速入门HttpClient

前言

一个商城,比如最为人熟知的淘宝和京东,一定会给用户提供一个最基本的功能,即商品搜索功能,首页最上面那个醒目的搜索栏就是了。那么,问题来了,手机客户端app的商品搜索功能的业务逻辑和PC端的业务逻辑是一样的吗?想都不用想,肯定是一样的,你总不能说在手机客户端app搜商品时,输入苹果关键字搜索出来了一个苹果手机,而在PC端以相同的关键字进行搜索,搜索出来的是一件T恤吧!如果果真是这样,那不是见鬼了吗?

既然手机客户端app的商品搜索功能的业务逻辑和PC端的业务逻辑是一样的,那么你有没有想过,手机客户端app是怎么来查询数据的呢?就拿笔者之前做过的一个淘淘商城项目来说(该项目的传送门是一个淘淘商城项目送给你,愿你有一个灿烂的前程!),手机客户端和PC端访问搜索系统的流程图如下所示。
在这里插入图片描述
不管是在手机客户端或者PC端,我们都可以使用HttpClient来模拟浏览器并发送请求,然后接收服务端返回的响应(一般都会返回JSON)。

这里我还得说一下,HttpClient不仅可以提供给手机客户端调用并返回JSON,还可以和其他的系统进行通信。
在这里插入图片描述

HttpClient简介

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它还支持HTTP协议最新的版本和建议。

HttpClient提供的主要功能有如下四个:
在这里插入图片描述
其实,我们之前所学的SolrJ就封装了HttpClient,下图就是实证。
在这里插入图片描述

快速入门HttpClient

学前须知

在学习HttpClient之前,咱们得知道HTTP协议的响应状态码一共有哪些,下图我已列出了所有的响应状态码。
在这里插入图片描述
哇!这么多响应状态码啊!难道以上罗列出的这些响应状态码我都得知道吗,或者说就硬死记硬背下来,其实大可不必这样,这样有点费力不讨好。对于有点开发经验的Java后端开发程序员来说,他一定会碰到一些常见的响应状态码,我们平常开发遇到的也就是这些常见的响应状态码了。
在这里插入图片描述
其次,本次学习HttpClient,咱们是基于HttpClient 4.3.5这个版本来学习的。

最后,为了更加方便于大家学习HttpClient,我在下方提供了一个maven工程,大家以该工程来学习即可。

链接:https://pan.baidu.com/s/1hm-sv4w99qWtcy5Lka6bDw,提取码:tv1e

无参数的GET请求

你有没有想过,你平时是如何来访问百度的啊?是不是得遵循下面三个步骤啊:

  • 第一步,打开浏览器
  • 第二步,在浏览器地址栏中输入url,例如www.baidu.com
  • 第三步,按回车键,发出请求

那么我们如何来使用HttpClient模拟浏览器发送请求,并接收服务端返回的响应呢?看下面代码便一目了然了。
在这里插入图片描述

带参数的GET请求

在笔者之前做过的淘淘商城项目中,进入该商城后台管理系统中去查询商品时,按住F12键,便能清楚地看到向服务器发送的请求了,包括请求的url、请求的参数以及请求的方式,如下图所示。
在这里插入图片描述
以上是使用谷歌浏览器看到的效果,那么问题又来了,我们如何来使用HttpClient模拟浏览器发送带参数的GET请求,并接收服务端返回的响应呢?看看下面这个类的代码,你便知道了。

package com.itheima.httpclient;

import java.net.URI;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class DoGETParam {
   

	public static void main(String[] args) throws Exception {
   

		// 创建HttpClient对象
		CloseableHttpClient httpclient = HttpClients.createDefault();

		// 定义请求的参数
		URI uri = new URIBuilder("http://localhost:8081/item/list"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值