应用网址进行改造

时间:2015-11-26 12:12:16

标签: android retrofit

我正在撰写改装演示。 我必须使用" 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

我认为这是我改变网址错误的方式。但我不知道如何修复它。

1 个答案:

答案 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);
    }