这是我的post
:
@POST("/path")
@FormUrlEncoded
void postIt(@Field("id") String id , Callback<Response> response);
这是Callback
:
private Callback<Response> responseCallBack = new Callback<Response>() {
@Override
public void success(Response response, Response response2) {
// get the id
}
@Override
public void failure(RetrofitError error) {
// do some thing
}
};
callback
我希望收到@POST
中发布的ID,我应该怎么做?
我无法更改服务器API
答案 0 :(得分:3)
要做到这一点,我们需要一个抽象类
abstract class CallBackWithArgument<T> implements Callback<T> {
String arg;
CallBackWithArgument(String arg) {
this.arg = arg;
}
CallBackWithArgument() {
}
并制作一个实例
new CallBackWithArgument<Response>(id) {
@Override
public void success(Response response, Response response2) {
//do something
}
@Override
public void failure(RetrofitError error) {
//do something
}
}
答案 1 :(得分:2)
这很容易。您可以简单地使Callback保持请求的ID并每次创建新的回调
class MyCallback extends Callback<Response> {
private final String id;
MyCallback(String id) {
this.id = id
}
@Override
public void success(Response response, Response response2) {
// get the id
}
@Override
public void failure(RetrofitError error) {
// do some thing
}
}
所以当你打电话给服务
myService.postIt("777", new MyCallback("777"))