我正在将标头添加到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
如果标头不在w3cschool协议中,则防火墙可能会将它删除了您传输的数据所使用的网关。
因此,请使用http协议中的标头密钥。
希望对您有帮助