我正在使用改装库来发布请求。但是我从服务器得到空的区域错误。所以我的参数("登录[密码]和登录[用户名]")变为空的服务器。我的错误在哪里?谢谢
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://myurl.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
Interfacem service = retrofit.create(Interfacem.class);
SignBody body=new SignBody("username","pass");
Call<ResponseBody> result =service.getResponse(body);
result.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response) {
try {
System.out.println(response.body().string().toString());
System.out.println(response.errorBody().string().toString());
} catch (IOException|NullPointerException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
});
SignBody课程如下:
public class SignBody {
@SerializedName("signin[username]") @Expose private String username;
@SerializedName("signin[password]") @Expose private String password;
public SignBody(String username, String password) {
this.username = username;
this.password = password;
}
}
最后是Interfacem.class:
public interface Interfacem {
@POST("/login")
Call<ResponseBody> getResponse(@Body SignBody body);
}
当我尝试邮差同样的想法时没有任何问题。 postman screenshot
答案 0 :(得分:2)
您在改造时使用的是哪个版本?下面是2.0版的代码。如果任何标题需要请检查。如果您可以共享网址和用户名或密码。我会检查。
public interface Interfacem {
@FormUrlEncoded
@POST("login")
Call<ResponseBody> getResponse(@Field("username") String username,@Field("password")String password );
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://myurl.com/")
.build();
Interfacem service = retrofit.create(Interfacem.class);
Call<ResponseBody> result =service.getResponse("myUsername","myPassword");
result.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response) {
try {
System.out.println(response.body().string().toString());
} catch (IOException|NullPointerException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
});
答案 1 :(得分:0)
你的体型似乎没有吸气剂。
答案 2 :(得分:0)