loginUser.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
loginView.onLoginResult(response.body());
} else {
loginView.showLoginErrorResult();
}
}
public interface NetworkAPI {
@POST("/login")
Call<User> login(@Body UserLogin userLogin);
}
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getAPI(String BASE_URL) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
if (retrofit == null) {
retrofit = new Retrofit
.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
public class User {
@SerializedName("id")
@Expose
private String id;
@SerializedName("token")
@Expose
private String token;
@SerializedName("email")
@Expose
private String email;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("lastName")
@Expose
private String lastName;
public User(String id, String token, String email, String firstName, String lastName) {
this.id = id;
this.token = token;
this.email = email;
this.firstName = firstName;
this.lastName = lastName;
}
//getters &setters...
}
{
"email":"test@email.com",
"password":"123456"
}
{
"success": true,
"payload": {
"email": "test@email.com",
"firstName": "test",
"lastName": "test",
}
}
我也得到了200的回复,但没有身体的数据
像这样创建一个新模型
public class ResponseApi{
boolean success;
User payload;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public User getPayload() {
return payload;
}
public void setPayload(User payload) {
this.payload = payload;
}
}
然后像这样更改代码
public interface NetworkAPI {
@POST("users/login")
Call< ResponseApi > login(@Body UserLogin userLogin);
}
希望它能奏效..实际上,由于结构不同,无法解析json对象。
我正在使用reverfit2调用一个微服务,它在PUT方法上返回一个200和一个空的响应体。但是,reverfit 2似乎无法处理这一点,并且在“enqueue”中转到onFailure分支 @override public void onFailure(Call Call,Throwable t){ 以下是日志: 有人知道这是什么原因造成的吗?因为请求被成功地提供了(见上文)。
我在网络请求中使用了带有okhttp_3库的retrofit_2(beta4)。并且我需要缓存响应数据,以满足网络关闭的情况,并且应用程序必须显示来自上一个相同请求的响应数据。我找到的解决这个问题的所有指南都是使用okhttp lib(而不是okhttp_3)。我试图解决问题: 但这不起作用。当网络处于打开状态时,所有请求都能正常工作,但当网络处于关闭状态时,它们不能返回缓存数据。拜托,帮忙解决这
我正在测试一个由JAX-WS编写的Rest服务。我执行我的服务,服务返回一个实体,我将该实体设置为响应状态ok,最后服务返回状态ok,代码200,但响应体为空。我调试了我的代码,下面这一行没有问题。原因是什么? 我的实体类是简单的Pojo:
我的newInstance方法如下所示: 因此,正如您所看到的,我需要知道什么是HTTP状态代码。通过将generic更改为,我无法获得http状态代码。你有什么建议?
我有一个向服务器发送数据的调用。如果一切正常,服务器会返回一个无效的响应。但是当有错误时,我会得到数据。 当有错误时,为了管理这个情况,我有一个对象。问题是,当请求成功时,改造会抛出一个异常,消息是:
我正在使用验证json模式。如果响应主体具有文件 如果响应正文有未在json模式中定义的EXTRA变量/值,则不会失败。如何使这个测试用例失败? 例如: 下面是具有预定义 JSON 架构的响应正文。 如果响应正文给出了额外的值,例如电子邮件/电话,那么它仍然在传递。我需要让它失败。这是我的测试用例,如果响应正文返回额外值,则失败。如何验证此测试用例?