我试图向我的服务器发出authtoken GET 请求。 我试图这样做:
public interface FixedRecApi {
public static final String ENDPOINT = "http://******.pythonanywhere.com/";
//@Headers("Authorization: Token ce7950e8d0c266986b7f972407db898810322***") this thing work well!!
@GET("/auth/me/")
Observable<User> me(@Header("Authorization: Token") String token); //this does not work at all!
Observable<User> me();
}
如您所见,具有显式标题的行:@Headers - 工作完美。 但是当我尝试将其作为参数传递时 - 它表示&#34;没有提供凭证&#34;。 我的申请onCreate:
@Override
public void onCreate() {
super.onCreate();
ActiveAndroid.initialize(this);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(FixedRecApi.ENDPOINT)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(
GsonConverterFactory.create(new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC)
.excludeFieldsWithoutExposeAnnotation()
.serializeNulls()
.create()))
.build();
service = retrofit.create(FixedRecApi.class);
}
不知道这件事有什么问题。拦截器也不起作用......
答案 0 :(得分:1)
我找到了解决方案。标题由两部分组成:
所以,改造用法应该是:
Observable<User> me(@Header("Authorization") String token);
然后例如在MainActivity中:
RetrofitApi.me("Token " + "ce7950e8d0c266986b7f972407db898810322***");