and*_*Dev 8 android rx-java retrofit retrofit2
这是我的UserService接口
@GET(Constants.Api.URL_LOGIN)
String loginUser(@Field("email") String email, @Field("password") String pass, @Field("secret") String secret, @Field("device_id") String deviceid, @Field("pub_key") String pubkey, @Field("device_name") String devicename);
Run Code Online (Sandbox Code Playgroud)
在我打电话的活动中
retrofit = new Retrofit.Builder()
.baseUrl(Constants.Api.URL_BASE)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
service = retrofit.create(UserService.class);
String status = service.loginUser(loginedt.getText().toString(), passwordedt.getText().toString(), secret, device_id, pub_key, device_name);
Run Code Online (Sandbox Code Playgroud)
这会产生一个例外
java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.String
for method UserService.loginUser
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Gradle:
compile 'com.squareup.retrofit:retrofit:2.+'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
Run Code Online (Sandbox Code Playgroud)
iag*_*een 13
由于您已经包含addCallAdapterFactory(RxJavaCallAdapterFactory.create()),因此您希望使用Observable's来管理您的通话.在您的界面中,显式给出参数化Observable而不是Call-
@GET(Constants.Api.URL_LOGIN)
Observable<String> loginUser(@Field("email") String email, @Field("password") String pass, @Field("secret") String secret, @Field("device_id") String deviceid, @Field("pub_key") String pubkey, @Field("device_name") String devicename);
Run Code Online (Sandbox Code Playgroud)
然后你的service方法为你创建了一个observable,你可以订阅或用作可观察管道的开头.
Observable<String> status = service.loginUser(loginedt.getText().toString(), passwordedt.getText().toString(), secret, device_id, pub_key, device_name);
status.subscribe(/* onNext, onError, onComplete handlers */);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15805 次 |
| 最近记录: |