博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot + jersey (非spring mvc)使用jersey client发送http post请求,并获取响应
阅读量:6314 次
发布时间:2019-06-22

本文共 3674 字,大约阅读时间需要 12 分钟。

hot3.png

依赖:

org.springframework.boot
spring-boot-starter-jersey

实现JerseyClientUtil工具类(实现post和get请求):

import org.glassfish.jersey.client.ClientConfig;import org.glassfish.jersey.client.JerseyClient;import javax.ws.rs.client.Client;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.client.Entity;import javax.ws.rs.client.WebTarget;import javax.ws.rs.core.Form;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import java.util.Map;/** * 作用:使用jerseyclient发送http请求。 * 主要用于调用老平台接口(非微服务架构的) */public class JerseyClientUtil {    private Client client;    JerseyClientUtil(){}    /**     * 静态内部类实现单例模式     */    private static class Singleton{        private static final JerseyClientUtil jerseyClientUtil = new JerseyClientUtil();    }    /**     * 获取单例JerseyClientUtil     * @return     */    public static JerseyClientUtil getJerseyClientUtil(){        return Singleton.jerseyClientUtil;    }    /**     * 初始化默认的clint对象     */    private void setDefaultClient(){        this.client =  ClientBuilder.newClient();    }    /**     * 根据传入的ClientConfig对象初始化client对象     * @param config     */    private void setConfigClient(ClientConfig config){        this.client =  ClientBuilder.newClient(config);    }    /**     * 根据ClientConfig初始化Client     * @param config     */    private void initClient(ClientConfig config){        if(config != null){            this.setConfigClient(config);        }else {            this.setDefaultClient();        }    }    /**     * 发送http post请求,返回服务器响应信息     * @param url 请求的URL     * @param form 发送的form对象     * @param config jerseyclient实例的配置信息,可以为空     * @param tClass 根据此类型处理返回实体     * @return response Response对象     */    public 
T postInvoke(String url, Form form, ClientConfig config,Class
tClass){ //初始化Client this.initClient(config); //发送POST的请求 //应该对响应实体类进行处理,这样链接才能关闭和回收 //官方:(https://jersey.github.io/documentation/latest/client.html#d0e5255)The underlying connections are opened for each request and closed after the response is received and entity is processed (entity is read). Response response = client.target(url).request(MediaType.APPLICATION_FORM_URLENCODED) .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE)); T resultObject = response.readEntity(tClass); return resultObject; } /** * 发送http get请求,返回服务器响应信息 * @param url 请求的URL * @param param 参数map * @param config jerseyclient实例的配置信息,可以为空 * @param tClass 根据此类型处理返回实体 * @return response Response对象 */ public
T getInvoke(String url, Map
param, ClientConfig config, Class
tClass){ //初始化Client this.initClient(config); WebTarget webTarget = client.target(url); //添加参数 for(String key : param.keySet()){ webTarget = webTarget.queryParam(key,param.get(key)); } T resultObject = webTarget.request().get(tClass); return resultObject; }}

 

使用:

@GET@Path("/sendMessage")@Consumes(MediaType.APPLICATION_FORM_URLENCODED)@Produces(MediaType.APPLICATION_JSON)public ResultBean sendMessage(@Content HttpServletRequest request,@QueryParam("phone") String phone){    //组合参数    Form from = new Form();    from.param("phone",phone);    String response = JerseyClientUtil.getJerseyClientUtil()            .postInvoke("**************************",                    from,null,String.class);    ResultBean resultBean  = new ResultBean(response);    return resultBean;}

 

 

老接口的访问方式:

134524_Oiig_3295928.png

老接口内容:

134235_t77k_3295928.png

 

转载于:https://my.oschina.net/u/3295928/blog/1798903

你可能感兴趣的文章
C#Stopwatch的使用,性能测试
查看>>
linux下安装JDK
查看>>
可视化编程开发板TurnipBit支持LED亮度可调功能
查看>>
ehcache2拾遗之write和load
查看>>
高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
查看>>
从二进制数据流中构造GDAL可以读取的图像数据
查看>>
Android自定义组件系列【11】——实现3D立体旋转效果
查看>>
数组方法
查看>>
C# 视频监控系列 序 [完]
查看>>
solr与.net系列课程(二)solr的配置文件及其含义
查看>>
KVM安装
查看>>
HTML5基础(三)
查看>>
restful api理解
查看>>
Tomcat在Windows下的免安装配置
查看>>
gulp解决跨域的配置文件
查看>>
Hibernate核心配置文件
查看>>
Object
查看>>
百度富文本编辑器整合fastdfs文件服务器上传
查看>>
sublime分屏显示
查看>>
python常用模块
查看>>