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

比眉伴天荒 2022-10-13 12:52 55阅读 0赞

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

OkHttpClient返回json字符串转javaBean

  1. import com.google.gson.Gson;
  2. import com.xiaojukeji.mdata.framework.entry.rest.RestDataResponse;
  3. import com.xiaojukeji.mdata.framework.error.CheckedException;
  4. import com.xiaojukeji.mdata.framework.error.ExceptionMessage;
  5. import okhttp3.ConnectionPool;
  6. import okhttp3.Headers;
  7. import okhttp3.OkHttpClient;
  8. import okhttp3.Request;
  9. import okhttp3.Response;
  10. import org.apache.commons.codec.binary.Base64;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.InitializingBean;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.http.HttpEntity;
  17. import org.springframework.http.HttpHeaders;
  18. import org.springframework.http.HttpMethod;
  19. import org.springframework.http.MediaType;
  20. import org.springframework.http.ResponseEntity;
  21. import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
  22. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  23. import org.springframework.stereotype.Component;
  24. import org.springframework.web.client.RestTemplate;
  25. import java.nio.charset.Charset;
  26. import java.nio.charset.StandardCharsets;
  27. import java.util.Arrays;
  28. import java.util.Objects;
  29. import java.util.concurrent.TimeUnit;
  30. /**
  31. * @Author test
  32. * @Description
  33. * @Date 2020/8/3
  34. **/
  35. @Component
  36. public class RemoteProxy implements InitializingBean{
  37. private static final Logger LOGGER = LoggerFactory.getLogger(RemoteProxy.class);
  38. private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
  39. @Value("${party3.integrity.alliance.username}") private String username;
  40. @Value("${party3.integrity.alliance.password}") private String password;
  41. @Value("${party3.integrity.alliance.path}") private String base_path_url;
  42. private static String BASIC_AUTH_TOKEN;
  43. /**
  44. * 组装Header参数中的鉴权信息(账号+密码方式)
  45. */
  46. @Override
  47. public void afterPropertiesSet() throws Exception {
  48. String auth = username + ":" + password;
  49. byte[] encodedAuth = Base64.encodeBase64(
  50. auth.getBytes(DEFAULT_CHARSET));
  51. BASIC_AUTH_TOKEN = "Basic " + new String(encodedAuth);
  52. }
  53. /**
  54. * 调用方法
  55. */
  56. public boolean remote(String param){
  57. RestDataResponse restDataResponse = queryHttpGetMethod(param);
  58. return (Boolean)restDataResponse.getData();
  59. }
  60. /**
  61. * get请求,组装url,放入鉴权header
  62. * 返回值RestDataResponse为自定义javaBean,结构与返回值Json字符型保持一致
  63. */
  64. private RestDataResponse queryHttpGetMethod(String param){
  65. Request request = new Request.Builder()
  66. .url(base_path_url + param)
  67. .addHeader("Authorization", BASIC_AUTH_TOKEN).build();
  68. // new client对象时注意配置的链接与超时时间,根据需要进行调整
  69. OkHttpClient client = new OkHttpClient.Builder()
  70. .connectTimeout(1, TimeUnit.SECONDS)
  71. .readTimeout(3, TimeUnit.SECONDS)
  72. .build();
  73. try{
  74. Response response = client.newCall(request).execute();
  75. String body = response.body().string();
  76. //json字符串转javaBean
  77. Gson gson = new Gson();
  78. RestDataResponse restDataResponse = gson.fromJson(body, RestDataResponse.class);
  79. if(response.code() != 200 || Objects.isNull(restDataResponse)){
  80. throw new CheckedException(ExceptionMessage.newInstance(400,
  81. "invoke remote integrity alliance api error"),"");
  82. }
  83. if(restDataResponse.getMeta().getCode() != 0){
  84. throw new CheckedException(ExceptionMessage.newInstance(restDataResponse.getMeta().getCode(),
  85. "invoke remote integrity alliance api error,message:{}"),
  86. restDataResponse.getMeta().getMessage());
  87. }
  88. return restDataResponse;
  89. }catch (Exception e){
  90. throw new CheckedException(ExceptionMessage.newInstance(400,
  91. "invoke remote integrity alliance api error"),"");
  92. }
  93. }
  94. }

发表评论

表情:
评论列表 (有 0 条评论,55人围观)

还没有评论,来说两句吧...

相关阅读