国外常用的seo站长工具,docker安装wordpress,自己做抽奖网站违法,网页设计图片不显示1HttpClient简介
在JDK中java.net包下提供了用户HTTP访问的基本功能#xff0c;但是它缺少灵活性或许多应用所需要的功能。
HttpClient起初是Apache Jakarta Common 的子项目。用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包#xff0c;并且它支持 H…1HttpClient简介
在JDK中java.net包下提供了用户HTTP访问的基本功能但是它缺少灵活性或许多应用所需要的功能。
HttpClient起初是Apache Jakarta Common 的子项目。用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包并且它支持 HTTP 协议最新的版本。2007年成为顶级项目。
通俗解释HttpClient可以实现使用Java代码完成标准HTTP请求及响应。 2 新建服务端项目
新建项目httpclient_rpc_server 2.1 修改maven配置文件 dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.3.2.RELEASE/versionscopeimport/scopetypepom/type/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies 2.2 新建控制器
package com.example.httpclientserver.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;Controller
public class TestController {/** 带参数的get请求*/RequestMapping(value/params, produces {application/json;charsetUTF-8})ResponseBodypublic String params(String name, String password){System.out.println(name - name ; password - password);return {\msg\:\登录成功\, \user\:{\name\:\name\,\password\:\password\}};}/** 不带参数的get请求*/RequestMapping(value/test,produces {application/json;charsetUTF-8})ResponseBodypublic String test(){return {\msg\:\处理返回\};}
}2.3 新建启动器
package com.example.httpclientserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class ServerApp {public static void main(String[] args) {SpringApplication.run(ServerApp.class, args);}
}2.4 application.yml修改端口非必需操作
server:port: 80 2.5 测试 3 新建客户端项目
新建客户端项目httpclient_rpc_client 3.1 添加maven依赖 dependenciesdependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.12/version/dependency/dependencies 3.2 新建主类进行httpclient访问
package com.example.httpclient;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;public class TestHttpClient {public static void main(String[] args) throws Exception {//访问无参数GET请求testGetNoParams();//访问有参数GET请求testGetNoParams();}/*** 有参数GET请求* throws IOException*/public static void testGetParams() throws IOException, URISyntaxException {HttpClient client HttpClients.createDefault();// 基于Builder构建请求地址URIBuilder builder new URIBuilder(http://localhost:80/params);// 基于单参数传递构建请求地址
// builder.addParameter(name, bjsxt);
// builder.addParameter(password, admin123);
// URI uri builder.build();// 基于多参数传递构建请求地址ListNameValuePair nvps new ArrayListNameValuePair();nvps.add(new BasicNameValuePair(name,bjsxt));nvps.add(new BasicNameValuePair(password, admin123));builder.addParameters(nvps);URI uri builder.build();System.out.println(uri.toASCIIString());String result EntityUtils.toString(client.execute(new HttpGet(uri)).getEntity());System.out.println(result);}/*** 无参数GET请求* 使用浏览器访问网站的过程是* 1、 打开浏览器* 2、 输入地址* 3、 访问* 4、 看结果* 使用HttpClient访问WEB服务的过程* 1、 创建客户端相当于打开浏览器* 2、 创建请求地址 相当于输入地址* 3、 发起请求 相当于访问网站回车键* 4、 处理响应结果 相当于浏览器显示结果*/public static void testGetNoParams() throws IOException {// 创建客户端对象HttpClient client HttpClients.createDefault();// 创建请求地址HttpGet get new HttpGet(http://localhost:80/test);// 发起请求接收响应对象HttpResponse response client.execute(get);// 获取响应体。 响应数据是一个基于HTTP协议标准字符串封装的对象。// 所以响应体和响应头都是封装的HTTP协议数据。直接使用可能有乱码或解析错误HttpEntity entity response.getEntity();// 通过HTTP实体工具类转换响应体数据。 使用的字符集是UTF-8String responseString EntityUtils.toString(entity, UTF-8);System.out.println(服务器响应数据是 - [ responseString ]);// 回收资源client null;}
}其中有参请求方式有两种一种是基于单参数传递构建请求地址如下 // 基于单参数传递构建请求地址builder.addParameter(name, bjsxt);builder.addParameter(password, admin123);URI uri builder.build();
一种是基于多参数传递构建请求地址如下 // 基于多参数传递构建请求地址ListNameValuePair nvps new ArrayListNameValuePair();nvps.add(new BasicNameValuePair(name,bjsxt));nvps.add(new BasicNameValuePair(password, admin123));builder.addParameters(nvps);URI uri builder.build(); 4 测试
启动httpclient_rpc_server和httpclient_rpc_clienthttpclient_rpc_client控制台输出如下 GET请求成功。