【发布时间】:2015-09-06 10:49:35
【问题描述】:
我创建了 Retrofit 界面
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: 应为字符串,但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT
【问题讨论】:
-
通常这些错误是因为 GSon 无法从您的对象中解析您的 json。也为用户发布您的模型。让我们看看一切是否正确
-
我不发布任何对象。仅限@Query 字符串
-
我不确定 100%,但我认为您需要一个实体类来进行改造。原因是它在内部使用 Gson,如果你没有任何实体类 Retrofit 不知道如何解析 POST、GET 数据