Rus*_*hal 4 java android retrofit okhttp retrofit2
我在获得身份验证的用户时遇到问题。在此之前,我得到了令牌和用户ID。现在,我需要使用访问令牌和ID从服务器获取用户。 我有标题格式
现在,我尝试使用拦截器添加带有用户令牌和ID的标头。
我的代码:
Interceptor interceptor = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Accept", "application/json")
.addHeader("authorization", token) <-??
.addHeader("driver_id", id) <-??
.build();
return chain.proceed(newRequest);
}
};
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
okHttpBuilder.addInterceptor(interceptor);
OkHttpClient okHttpClient = okHttpBuilder.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
Run Code Online (Sandbox Code Playgroud)
接口:
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver();
Run Code Online (Sandbox Code Playgroud)
不同的变体抛出401错误,不知道该怎么办Log:
I/Response code: 401
I/Response message: Unauthorized`
Run Code Online (Sandbox Code Playgroud)
我知道了。它必须看起来像:
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String auth);
Run Code Online (Sandbox Code Playgroud)
和身份验证:
Call<Driver> call = apiInterface.getAuthorizedDriver("Token token=" + token + ", driver_id=" + id);
Run Code Online (Sandbox Code Playgroud)
尝试通过方法调用传递标头值:
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String token,
@Header("driver_id") Integer id);
Run Code Online (Sandbox Code Playgroud)
您也不必处理大量的拦截器代码
| 归档时间: |
|
| 查看次数: |
12194 次 |
| 最近记录: |