ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java使用OkHttpClient发送get请求携带Header参数

2021-07-07 11:01:07  阅读:461  来源: 互联网

标签:java String get springframework OkHttpClient org import restDataResponse new


本文章使用OkHttpClient发送get请求携带Header参数,header里为鉴权的用户+密码

OkHttpClient返回json字符串转javaBean

import com.google.gson.Gson;
import com.xiaojukeji.mdata.framework.entry.rest.RestDataResponse;
import com.xiaojukeji.mdata.framework.error.CheckedException;
import com.xiaojukeji.mdata.framework.error.ExceptionMessage;
import okhttp3.ConnectionPool;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Objects;
import java.util.concurrent.TimeUnit;

/**
 * @Author test
 * @Description
 * @Date 2020/8/3
 **/
@Component
public class RemoteProxy implements InitializingBean{

    private static final Logger LOGGER = LoggerFactory.getLogger(RemoteProxy.class);

    private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

    @Value("${party3.integrity.alliance.username}") private String username;

    @Value("${party3.integrity.alliance.password}") private String password;

    @Value("${party3.integrity.alliance.path}") private String base_path_url;

    private static String BASIC_AUTH_TOKEN;

    /**
     * 组装Header参数中的鉴权信息(账号+密码方式)
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        String auth = username + ":" + password;
        byte[] encodedAuth = Base64.encodeBase64(
                auth.getBytes(DEFAULT_CHARSET));
        BASIC_AUTH_TOKEN = "Basic " + new String(encodedAuth);
    }

    /**
     * 调用方法
     */
    public boolean remote(String param){
        RestDataResponse restDataResponse = queryHttpGetMethod(param);
        return (Boolean)restDataResponse.getData();
    }

    /**
     * get请求,组装url,放入鉴权header
     * 返回值RestDataResponse为自定义javaBean,结构与返回值Json字符型保持一致
     */
    private RestDataResponse queryHttpGetMethod(String param){

        Request request = new  Request.Builder()
                .url(base_path_url + param)
                .addHeader("Authorization", BASIC_AUTH_TOKEN).build();
        // new client对象时注意配置的链接与超时时间,根据需要进行调整
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(1, TimeUnit.SECONDS)
                .readTimeout(3, TimeUnit.SECONDS)
                .build();

        try{
            Response response = client.newCall(request).execute();
            String body = response.body().string();
            //json字符串转javaBean
            Gson gson = new Gson();
            RestDataResponse restDataResponse = gson.fromJson(body, RestDataResponse.class);
            if(response.code() != 200 || Objects.isNull(restDataResponse)){
                throw new CheckedException(ExceptionMessage.newInstance(400,
                        "invoke remote integrity alliance api error"),"");
            }
            if(restDataResponse.getMeta().getCode() != 0){
                throw new CheckedException(ExceptionMessage.newInstance(restDataResponse.getMeta().getCode(),
                        "invoke remote integrity alliance api error,message:{}"),
                        restDataResponse.getMeta().getMessage());
            }
            return restDataResponse;
        }catch (Exception e){
            throw new CheckedException(ExceptionMessage.newInstance(400,
                    "invoke remote integrity alliance api error"),"");
        }
    }

}

标签:java,String,get,springframework,OkHttpClient,org,import,restDataResponse,new
来源: https://blog.csdn.net/Alice_qixin/article/details/118542030

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有