2016-01-13 69 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 –