改造不通过 h​​ttps 发送标头

Posted

技术标签:

【中文标题】改造不通过 h​​ttps 发送标头【英文标题】:retrofit not sending the headers over https 【发布时间】:2020-04-26 05:10:42 【问题描述】:

我一直在通过“HTTP”使用改造,并且工作正常,直到我切换到“HTTPS”突然服务器不再能够看到标头或改造无法发送它。

OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() 

           @Override
           public Response intercept(Chain chain) throws IOException 
                        Request newRequest = chain.request().newBuilder()
                                .addHeader(Constants.AccessTokenHeaderName, AccessToken)
                                .addHeader(Constants.ClientTokenHeaderName, Global.getClientToken())
                                .addHeader(Constants.AuthCodeHeaderName, Global.getAuthCode(context))
                                .build();
                        return chain.proceed(newRequest);
                    
                ).connectTimeout(0, TimeUnit.SECONDS).build();
                Gson gson = new GsonBuilder()
                        .setLenient()
                        .create();
                retrofitWithAuth = new Retrofit.Builder()
                        .client(client)
                        .baseUrl(BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create(gson)).build();

【问题讨论】:

你能在 logcat 中看到你的日志吗?因为我们通过 https 发送它,所以它是一个实施错误而不是改造。 【参考方案1】:

也许您错过了 protocols(Collections.singletonList(Protocol.HTTP_1_1))。 我以这种方式创建了 OkHttpClient:

 private static OkHttpClient getNewClient() 
    Interceptor interceptor = new Interceptor() 
        @Override
        public Response intercept(Chain chain) throws IOException 
            //todo
            return null;
        
    ;
    return new OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .connectTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(10, TimeUnit.SECONDS)
            .readTimeout(20, TimeUnit.SECONDS)
            .protocols(Collections.singletonList(Protocol.HTTP_1_1)) // Disable HTTP/2 for interop with nginx 1.9.5.
            .build();

【讨论】:

以上是关于改造不通过 h​​ttps 发送标头的主要内容,如果未能解决你的问题,请参考以下文章

启用 ProGuard 时改造 2 不发送数据

发送 PHP 标头时不显示通过 Htaccess 的自定义 405 错误消息

如何在 Alamofire Swift 的 POST 请求中添加标头参数(-H、-u、-X、-d)

未通过 HttpClient 请求发送的授权标头

当我在授权标头中发送有效的不记名令牌时,为啥我的 Spring-Cloud Gateway / OAuth2-Client 没有通过身份验证?

fastapi swagger 不发送带有 url 的令牌