我正在使用retrofit在android中创建登录函数。我已经创建了一个用于登录验证的端点,然后我使用Postman使用raw(json)测试了它,它工作了。但是当我使用retrofit将端点输入到android中时,我得到了这样的错误消息:
语法异常:java.lang.IllegalStateException:需要字符串,但在第1行第39列路径$.message处为开始_OBJECT
有人能帮我吗?
所以这里我的来源:
Api客户端
public class ApiClient {
public static final String BASE_URL = "";
public static Retrofit retrofit;
public static Retrofit getRetrofit() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
验证界面
public interface AuthInterface {
@Headers("Content-Type: application/json")
@POST("auth/login")
Call<AuthPost> authPostCall(@Body String body);
}
授权发布
public class AuthPost {
@SerializedName("status")
private String status;
@SerializedName("error_code")
private int error_code;
@SerializedName("message")
private String message;
@SerializedName("token")
private String token;
...getter and setter
}
登录活动
JSONObject payload = new JSONObject();
try {
payload.put("login_username", loginUsernameText);
payload.put("login_password", loginPasswordText);
} catch (JSONException e) {
e.printStackTrace();
}
Call<AuthPost> authPostCall = authInterface.authPostCall(payload.toString());
authPostCall.enqueue(new Callback<AuthPost>() {
@Override
public void onResponse(Call<AuthPost> call, Response<AuthPost> response) {
if (response.code() == 200) {
} else {
}
}
@Override
public void onFailure(Call<AuthPost> call, Throwable t) {
t.printStackTrace();
}
});
1条答案
按热度按时间ibrsph3r1#
是否确定:
如果此字段是Object,通常会出现此错误。您的JSON看起来像
或者类似于:
如果是第二个变量,那么你应该简单地将字段更改为必要的类型。