Retrofit 2添加页眉-日志记录拦截器

问题描述 投票:1回答:1

我正在将标头添加到get请求中-服务器端未收到标头。我正在使用addConverterFactory(ScalarsConverterFactory.create())。代码:

        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @NotNull
                    @Override
                    public okhttp3.Response intercept(@NotNull Chain chain) throws IOException {
                        Request originalRequest = chain.request();
                        Request newRequest = originalRequest.newBuilder()
                                .addHeader("Header","123")
                                .build();
                        return chain.proceed(newRequest);
                    }
                })
                .addInterceptor(loggingInterceptor)
                .build();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("URL")
                .addConverterFactory(ScalarsConverterFactory.create())
                .client(okHttpClient)
                .build();

        retrofit2.Call<String> call = apiRetrofitInterface.getString("URL");
        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(retrofit2.Call<String> call, retrofit2.Response<String> response) {
                 // 
            }

接口代码:

public interface ApiRetrofitInterface {

    @GET
    Call <String> getString(@Url String url);
}

标题是否可能在记录拦截器中,但服务器没有收到它?

 I/okhttp.OkHttpClient: --> GET "MY URL"
 I/okhttp.OkHttpClient: Header: 123
 I/okhttp.OkHttpClient: --> END GET
 I/okhttp.OkHttpClient: <-- 400 Bad Request "MY URL" (137ms)
 I/okhttp.OkHttpClient: X-Powered-By: Express
 I/okhttp.OkHttpClient: Access-Control-Allow-Origin: *
 I/okhttp.OkHttpClient: Access-Control-Allow-Headers: content-type
 I/okhttp.OkHttpClient: Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
 I/okhttp.OkHttpClient: Content-Type: text/html; charset=utf-8
 I/okhttp.OkHttpClient: Content-Length: 39
 I/okhttp.OkHttpClient: ETag: W/"27-Gy6wj20Vfpjmp7p+PeGaPrL9u2U"
 I/okhttp.OkHttpClient: Date: Sun, 31 May 2020 21:53:29 GMT
 I/okhttp.OkHttpClient: Connection: keep-alive
 I/okhttp.OkHttpClient: <-- END HTTP
android logging header retrofit2 interceptor
1个回答
0
投票

如果标头不在w3cschool协议中,则防火墙可能会将它删除了您传输的数据所使用的网关。

因此,请使用http协议中的标头密钥。

希望对您有帮助

© www.soinside.com 2019 - 2024. All rights reserved.