2015-09-06 184 views
0

我創建更新接口

public interface UserService { 
    @GET(Constants.Api.URL_LOGIN) 
    Call<String> loginUser(@Query("email") String email, @Query("password") String pass, @Query("secret") String secret, @Query("device_id") String deviceid, @Query("pub_key") String pubkey, @Query("device_name") String devicename); 

當活動我打電話

final Call<String> responce = service.loginUser(loginedt.getText().toString(), md5(passwordedt.getText().toString()), secret, device_id, pub_key, device_name); 

        responce.enqueue(new Callback<String>() { 
         @Override 
         public void onResponse(Response<String> response) { 
          if (response.code() == Constants.Status.ERROR_404) { 
           Toast.makeText(LoginActivity.this, getResources().getString(R.string.wrong_log_pass), Toast.LENGTH_LONG).show(); 
          } else if (response.code() != Constants.Status.ERROR_404 && response.code() != Constants.Status.SUCCES) { 
           Toast.makeText(LoginActivity.this, getResources().getString(R.string.wrong_request), Toast.LENGTH_LONG).show(); 
          } else { 
           startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
          } 
         } 

         @Override 
         public void onFailure(Throwable t) { 
          t.printStackTrace(); 

         } 
        }); 

我得到錯誤 onFailure處 java.lang.IllegalStateException:期望一個字符串,但是BEGIN_OBJECT在第1行第2列路徑$

+0

通常這些類型的錯誤是因爲GSON的返回不能從你的對象分析你的JSON。將您的模型發佈給用戶。讓我們看看是否一切正確 – acostela

+0

我不發佈任何對象。僅查詢@Query字符串 – androidAnonDev

+0

我不確定100%,但我認爲您需要實體類才能使用改進。原因是內部它使用Gson,如果你沒有任何實體類Retrofit不知道如何解析POST,GET數據 – acostela

回答

1

什麼是您的迴應r API?改造將服務器響應解析爲傳遞給調用對象的類型,即Call<ResponseType>。由於您收到的錯誤,服務器在您期待字符串時返回對象。
改變你的服務是

Call<ResponseTypeObject> loginUser(@Query("email") String email, @Query("password") String pass, @Query("secret") String secret, @Query("device_id") String deviceid, @Query("pub_key") String pubkey, @Query("device_name") String devicename); 

其中ResponseTypeObject是響應實體從服務器

相關問題