博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring注解配置okhttp3
阅读量:6353 次
发布时间:2019-06-22

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

  hot3.png

背景

之前在spring上面使用过okhttp:

Component

package com.zyl.config;import okhttp3.ConnectionPool;import okhttp3.Credentials;import okhttp3.OkHttpClient;import okhttp3.logging.HttpLoggingInterceptor;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;/** okhttp3 configuration */@Componentpublic class OkHttpConfiguration {    private Logger logger = LoggerFactory.getLogger(OkHttpConfiguration.class);    /**     * 为新连接设置默认连接超时,单位毫秒     */    @Value("${connectTimeout:10000}")    private long connectTimeout;    /**     * true表示启用连接池,false表示不启用连接池     */    @Value("${connectionPoolEnable:true}")    private boolean connectionPoolEnable;    /**     * sap的基本认证     */    @Value("${username:zyl}")    private String username;    /**     * sap的基本认证     */    @Value("${password:xxxyyy}")    private String password;    @Bean    public OkHttpClient okHttpClient(){        OkHttpClient.Builder builder = new OkHttpClient.Builder();if (connectionPoolEnable){            builder.connectionPool(new ConnectionPool());        }        builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS);        builder.authenticator((route, response) -> {            if (response.request().header("Authorization") != null) {                return null; // Give up, we've already attempted to authenticate.            }            logger.info("Authenticating for response: " + response);            logger.info("Challenges: " + response.challenges());            String credential = Credentials.basic(username, password);            return response.request().newBuilder()                    .header("Authorization", credential)                    .build();        });        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();        logging.setLevel(HttpLoggingInterceptor.Level.BASIC);        builder.addInterceptor(logging);        return builder.build();    }}

运行时配置中心,现在还玩不6。

Controller

@Autowiredprivate OkHttpClient okHttpClient;

在控制器中使用:

Request request = new Request.Builder()                  .url("https://www.google.com/ncr")                  .addHeader("myheader", "hello header")                  .get()                  .build();Response response = null;try {  response = okhttpClient.newCall(request).execute();  response.body().string();} catch (IOException e) {  e.printStackTrace();} finally {  if(response != null) {    response.close();  }}

参考

转载于:https://my.oschina.net/fxtxz2/blog/2985877

你可能感兴趣的文章
Mysql备份和恢复策略
查看>>
linux17-邮件服务器
查看>>
AS开发JNI步骤
查看>>
Android NDK开发:JNI基础篇
查看>>
使用Maven命令快速建立项目结构
查看>>
二分查找,php
查看>>
python面试题-django相关
查看>>
Python——eventlet.greenthread
查看>>
记大众点评之面试经历
查看>>
第三章:基本概念
查看>>
Jersey+mybatis实现web项目第一篇
查看>>
C++形参中const char * 与 char * 的区别
查看>>
espresso 2.0.4 Apple Xcode 4.4.1 coteditor 价格
查看>>
Object-C中emoji与json的问题
查看>>
一、Lambda表达式
查看>>
linux 命令
查看>>
灾后重建
查看>>
Nothing 和 Is
查看>>
第一个sprint冲刺第三天
查看>>
周末web前端练习
查看>>