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: 邏輯代碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,914評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,948評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • 面向對象三大特性:封裝,繼承,多態。 封裝: 將對象具有的一些屬性和方法打包到一起,隱藏屬性和方法的具體實現。即封...
    silingling閱讀 354評論 0 0
  • 最近幾天忙到抽筋,陪孩子,辦入職,學會計,再加上為了給電腦提速,整了兩天都沒搞定的電腦系統,我覺得我的時間嚴重不夠...
    淡香空氣閱讀 200評論 0 0