2016-01-13 137 views
0

我使用Retrofit2,我想发布我们的服务器来获取一些json数据。所以我有2个类。这是我的响应等级:改装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"); 
     } 
    }); 

这是邮递员截图什么我想要做的: Postman Screenshot

所以我越来越这个呃ROR:

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

什么是错在这里我找不到,我曾尝试和许多看问题#1和不能找到解决办法:(

回答

1

在接口APIServicegetRegisterToken(...)返回类型更改为void。您将通过最后一个回调参数收到POST结果的通知。

所以也删除Callback<RegisterToken> registerToken =之前service.getRegisterToken

+0

首先感谢您的回复。我试过你的东西,并得到这个错误: java.lang.IllegalArgumentException:服务方法不能返回void。 方法APIService.getRegisterToken –

+0

哦,你正在使用Retrofit 2,对不起,没有注意到。看到这个答案有关你的结构应该如何看起来像:http://stackoverflow.com/a/32614103/1395437 –

+0

我试过在你的链接上标记anser,但同样的错误再次 你可以看到我的代码在这里:https:// codeshare.io/CXpwR –