我正在撰写改装演示。 我必须使用" https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"得到代码。
写作休息时,我这样做:public interface WXService {
@GET("/access_token?grant_type=authorization_code")
Observable<AccessTokenModel> getAccessToken(@Query("appid") String appId,
@Query("secret") String secretId,
@Query("code") String code);
}
public class WXRest {
private static final String WXBaseUrl = "https://api.weixin.qq.com/sns/oauth2/";
private WXService mWXService;
public WXRest() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(WXBaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
mWXService = retrofit.create(WXService.class);
}
public void getAccessToken(String code) {
mWXService.getAccessToken(Constants.APP_ID, Constants.SECRET_ID, code)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<AccessTokenModel>() {
@Override
public void call(AccessTokenModel accessTokenModel) {
Log.e("WX", "accessToken:" + accessTokenModel.accessToken);
}
});
}
}
但是我收到了一个错误:
java.lang.IllegalArgumentException:无法为其创建调用适配器 rx.Observable
我认为这是我改变网址错误的方式。但我不知道如何修复它。
答案 0 :(得分:2)
我认为你应该将adapter-rxjava lib包含在你的gradle依赖项中。
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'
然后将调用适配器工厂添加到您的改造构建器
public WXRest() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(WXBaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
mWXService = retrofit.create(WXService.class);
}