【问题标题】:Retrofit 2 post error改造 2 后错误
【发布时间】:2016-07-27 05:17:49
【问题描述】:

我正在使用Retrofit2,我想发布我们的服务器以获取一些 json 数据。所以我有 2 个课程。这是我的响应类:

public class RegisterToken {

private String accessToken;
private String tokenType;
private Integer expiresIn;
private String refreshToken;
private String asClientId;
private String Issued;
private String Expires;
private Map<String, Object> additionalProperties = new HashMap<>();

public String getAccessToken() {
    return accessToken;
}

public void setAccessToken(String accessToken) {
    this.accessToken = accessToken;
}

//and the other setter and getter,actually dont write cuz its too long

}

然后这是我的 API 发布界面:

public interface APIService {
@FormUrlEncoded
@POST("token")
public Callback<RegisterToken>  getRegisterToken(@Header("Accept")String accept,
    @Header("Content-Type")String contentType,@Header("register") String registerActive, 
    @Field("grant_type") String grantType,@Field("client_id") String clientId,
    @Field("client_secret") String clientSecret,Callback<RegisterToken> callback);
}

在活动中我正在这样做:

Gson gson = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
            .create();

    Retrofit client = new Retrofit.Builder()
            .baseUrl(getResources().getString(R.string.base_api_url))
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();


    APIService service = client.create(APIService.class);
    Callback<RegisterToken> registerToken=service.getRegisterToken("application/json", 
        "application/json", "active", grant_type, client_id, client_secret,
        new Callback<RegisterToken>() {
        @Override
        public void onResponse(retrofit2.Response<RegisterToken> response) {
            Log.v("good","okkay");
        }

        @Override
        public void onFailure(Throwable t) {
            Log.v("bad","shithapp");
        }
    });

这是我想要做的邮递员截图:

所以我收到了这个错误:

java.lang.IllegalArgumentException: Unable to create call adapter for
retrofit2.Callback<RegisterToken> for method APIService.getRegisterToken

这里有什么问题我找不到,我尝试并查看了许多 Stackoverflow 问题但找不到解决方案:(

【问题讨论】:

    标签: android retrofit retrofit2


    【解决方案1】:

    在接口APIService中,将getRegisterToken(...)的返回类型改为void。 POST结果会通过最后一个回调参数通知你。

    所以还要在service.getRegisterToken 之前删除Callback&lt;RegisterToken&gt; registerToken =

    【讨论】:

    • 首先感谢您的回复。我试过你的东西并得到这个错误:java.lang.IllegalArgumentException:服务方法不能返回无效。对于方法 APIService.getRegisterToken
    • 哦,您使用的是 Retrofit 2,抱歉,没注意到。请参阅此 SO 答案,了解您的结构应如何:stackoverflow.com/a/32614103/1395437
    • 我尝试在您的链接上标记分析器,但同样的错误再次出现,您可以看到我的代码在这里:codeshare.io/CXpwR
    • 您可以将完整的堆栈跟踪复制到您的帖子吗?
    • 这是我的错误 java.lang.IllegalArgumentException: Unable to create call adapter for retrofit2.Call for method APIService.getRegisterToken
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2016-05-03
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多