【发布时间】:2020-05-31 22:20:23
【问题描述】:
我正在向 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);
}
是否有可能标头在 Logging Interceptor 中但服务器没有收到?
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
【问题讨论】:
-
“服务器端没有收到标头”——你如何确定这一点?您是否尝试过使用 Charles Proxy 之类的工具来检查实际通信,查看请求中是否包含标头?
-
@CommonsWare - 我的合作伙伴在服务器端工作。我会转发你的消息。我的代码看起来还可以吗?
标签: android logging header retrofit2 interceptor