2016-01-03 60 views
2

我正在使用我的個人Android項目之一,並且遇到了障礙。我正嘗試使用Retrofit 2.0.0-beta2發佈到一個URL,但在服務方法方面存在一些問題,該方法應該將我的對象(JsonPost)的屬性轉換爲JSON對象。下面是我的代碼發送請求正文中的對象,這是在我的MainActivity。在Android Studio中使用Retrofit 2.0進行POST

public void getTone() { 
    JsonPost jPost = new JsonPost("email", mJsonText); 
    Call<JsonPost> call = JsonService.createJsonPost(jPost); 
    call.enqueue(new Callback<JsonPost>() { 
     @Override 
     public void onResponse(retrofit.Response<JsonPost> response, Retrofit retrofit) { 

     } 

     @Override 
     public void onFailure(Throwable t) { 

     } 
    }); 
} 

JsonService接口:

public interface JsonService { 
    @POST("/tone") 
    Call<JsonPost> createJsonPost(@Body JsonPost jPost); 
} 

該錯誤是 '非靜態方法.createJsonPost()不能從靜態上下文引用的'。雖然我明白這意味着什麼,但我不知道如何解決這個問題。如果有人可以請提供一些見解,將不勝感激。謝謝!

回答

1

你的問題涉及到你的線下在你嘗試,使Web服務調用:

Call<JsonPost> call = JsonService.createJsonPost(jPost); 

你所得到的錯誤:

「非靜態方法.createJsonPost()不能從靜態上下文中引用'

生成是因爲您正在處理接口JsonService及其方法createJsonPost()就好像它是一個靜態方法而不是實例方法。

看起來你可能還沒有正確配置Retrofit來使用你的服務接口。

你需要做了下面的代碼某處初始化您的服務:

Retrofit retrofit = new Retrofit.Builder() 
    .baseUrl("https://yoururl.com") 
    .build(); 

JsonService service = retrofit.create(JsonService.class); 

,然後你可以自由地使用該服務如下:

Call<JsonPost> call = service.createJsonPost(jPost); 
+0

謝謝!完美解釋。我會upvote你,但我是新的:/。再次感謝! –

+0

沒問題。一個容易犯的錯誤:) –