jersey client http and https —— java

使用框架 Spring boot


Spring boot 集成

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
</dependency>

JerseyClientUtil 类

集成简单的GET、POST请求(包括http https)

package com.tenmax.util;

import javax.net.ssl.SSLContext;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Response;

import org.glassfish.jersey.SslConfigurator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class JerseyClientUtil {
    
    @Autowired
    AppConfiguration appConfiguration;
    
    private String acceptedResponseMediaTypes;
    
    private String entityConverteMediaType;
    
    public JerseyClientUtil setAcceptedResponseMediaTypes(String mediaTypes) {
        this.acceptedResponseMediaTypes = mediaTypes;
        return this;
    }
    
    public JerseyClientUtil setEntityConverteMediaType(String mediaTypes) {
        this.entityConverteMediaType = mediaTypes;
        return this;
    }

    private SslConfigurator buildSSLConfigOneWay() {
        return SslConfigurator.newInstance()
                              .trustStoreFile(appConfiguration.getTrustStoreFile())
                              .trustStorePassword(appConfiguration.getTrustStorePassword());
    }
    
    private SslConfigurator buildSSLConfigBidirectional() {
        return SslConfigurator.newInstance()
                .trustStoreFile(appConfiguration.getTrustStoreFile())
                .trustStorePassword(appConfiguration.getTrustStorePassword())
                .keyStoreFile(appConfiguration.getKeyStoreFile())
                .keyStorePassword(appConfiguration.getKeyPassword());
    }
    
    private Client buildSSLClient(SslConfigurator sslConfig) {
        SSLContext sslContext = sslConfig.createSSLContext();
        return ClientBuilder.newBuilder()
                .sslContext(sslContext)
                .build();
    }
    
    public Response getHttpsOne(String url){
        checkinitSuccessGet();
        SslConfigurator sslConfig = buildSSLConfigOneWay();
        Client client = buildSSLClient(sslConfig);
        return client.target(url)
                     .request(acceptedResponseMediaTypes)
                     .get();
    }
    
    public Response getHttpsTwo(String url){
        checkinitSuccessGet();
        SslConfigurator sslConfig = buildSSLConfigBidirectional();
        Client client = buildSSLClient(sslConfig);
        return client.target(url)
                .request(acceptedResponseMediaTypes)
                .get();
    }
    
    public Response postHttpsOne(String url, Object obj){
        checkinitSuccessPost();
        SslConfigurator sslConfig = buildSSLConfigOneWay();
        Client client = buildSSLClient(sslConfig);
        return client.target(url)
                .request(acceptedResponseMediaTypes)
                .post(Entity.entity(obj, entityConverteMediaType));
    }
    
    public Response postHttpsTwo(String url, Object obj){
        checkinitSuccessPost();
        SslConfigurator sslConfig = buildSSLConfigBidirectional();
        Client client = buildSSLClient(sslConfig);
        return client.target(url)
                     .request(acceptedResponseMediaTypes)
                     .post(Entity.entity(obj, entityConverteMediaType));
    }
    
    public Response getHttp(String url){
        checkinitSuccessGet();
        return ClientBuilder.newClient()
                            .target(appConfiguration.getWebServer())
                            .request(acceptedResponseMediaTypes)
                            .get();
    }
    
    public Response postHttp(String url, Object obj){
        checkinitSuccessPost();
        return ClientBuilder.newClient()
                            .target(appConfiguration.getWebServer())
                            .request(acceptedResponseMediaTypes)
                            .post(Entity.entity(obj, entityConverteMediaType));
    }
    
    private void checkinitSuccessPost(){
        if (entityConverteMediaType == null||acceptedResponseMediaTypes == null) {
            System.out.println("JerseyClientUtil init faild when POST! please init entityConverteMediaType and acceptedResponseMediaTypes!");
            return;
        }
    }
    
    private void checkinitSuccessGet(){
        if (acceptedResponseMediaTypes == null) {
            System.out.println("JerseyClientUtil init faild when GET! please init acceptedResponseMediaTypes!");
            return;
        }
    }
}

调用示例(POST请求)

@Autowired
JerseyClientUtil jerseyClientUtil;
Response response = jerseyClientUtil.setAcceptedResponseMediaTypes(MediaType.APPLICATION_JSON)
                                            .setEntityConverteMediaType(MediaType.APPLICATION_JSON)
                                            .postHttp(appConfiguration.getWebServer(), new User(userId, password));
YourObject obj = response.readEntity(YourObject .class);
//TODO: 逻辑代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,118评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,919评论 25 709
  • 面向对象三大特性:封装,继承,多态。 封装: 将对象具有的一些属性和方法打包到一起,隐藏属性和方法的具体实现。即封...
    silingling阅读 2,767评论 0 0
  • 最近几天忙到抽筋,陪孩子,办入职,学会计,再加上为了给电脑提速,整了两天都没搞定的电脑系统,我觉得我的时间严重不够...
    淡香空气阅读 1,499评论 0 0

友情链接更多精彩内容