Android 服务器的改装参数变为空
我正在使用改装库进行post请求。但我从服务器得到空字段区域错误。所以我的参数(“signin[password]和signin[username]”在服务器上变为空。我的错在哪里?多谢各位Android 服务器的改装参数变为空,android,retrofit,Android,Retrofit,我正在使用改装库进行post请求。但我从服务器得到空字段区域错误。所以我的参数(“signin[password]和signin[username]”在服务器上变为空。我的错在哪里?多谢各位 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myurl.com/") .addConverterFactory(GsonConverte
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();
}
});
最后,interfaceem.class:
public interface Interfacem {
@POST("/login")
Call<ResponseBody> getResponse(@Body SignBody body);
}
公共接口接口{
@POST(“/登录”)
调用getResponse(@Body SignBody);
}
当我试着和邮递员一样思考时,没有任何问题。
您的body类中似乎没有getter。您的body类中似乎没有getter。将接口类更改为(删除路径中的斜线)
公共接口接口{
@发布(“登录”)
调用getResponse(@Body SignBody);
}
您可以在我的回答中引用原因,将接口类更改为(删除路径中的斜杠)
公共接口接口{
@发布(“登录”)
调用getResponse(@Body SignBody);
}
您可以在我的回答中说明原因您在改装中使用的是哪个版本?下面是2.0版的代码。如果需要任何标题,请检查。如果您可以共享url和用户名或密码。我查一下
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();
}
});
公共接口接口{
@FormUrlEncoded
@发布(“登录”)
调用getResponse(@Field(“用户名”)字符串用户名,@Field(“密码”)字符串密码);
}
改装改装=新改装.Builder()
.baseUrl(“http://myurl.com/")
.build();
Interfacem服务=改装.create(Interfacem.class);
调用结果=service.getResponse(“myUsername”、“myPassword”);
result.enqueue(新回调(){
@凌驾
公共响应(响应){
试一试{
System.out.println(response.body().string().toString());
}捕获(IOException | NullPointerException e){
e、 printStackTrace();
}
}
@凌驾
失效时的公共无效(可丢弃的t){
t、 printStackTrace();
}
});
您在改装中使用的是哪个版本?下面是2.0版的代码。如果需要任何标题,请检查。如果您可以共享url和用户名或密码。我查一下
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();
}
});
公共接口接口{
@FormUrlEncoded
@发布(“登录”)
调用getResponse(@Field(“用户名”)字符串用户名,@Field(“密码”)字符串密码);
}
改装改装=新改装.Builder()
.baseUrl(“http://myurl.com/")
.build();
Interfacem服务=改装.create(Interfacem.class);
调用结果=service.getResponse(“myUsername”、“myPassword”);
result.enqueue(新回调(){
@凌驾
公共响应(响应){
试一试{
System.out.println(response.body().string().toString());
}捕获(IOException | NullPointerException e){
e、 printStackTrace();
}
}
@凌驾
失效时的公共无效(可丢弃的t){
t、 printStackTrace();
}
});
您确定正确读取了服务器端的数据吗?可能您正在尝试从请求头读取数据?您确定正确读取了服务器端的数据吗?可能您正在尝试读取请求标头?我的参数应该是signin[username]和signin[password]我的参数应该是signin[username]和signin[password]我在signbody类中使用了set和get方法,但它不是解决方案我在signbody类中使用了set和get方法,但它不是解决方案您确定您的请求正确吗?我的意思是,你有没有在另一个工具上试用过,比如邮递员或其他什么工具/你能分享你的信息吗?(用户名、密码、url)。我会尽力帮助您的,谢谢您的支持,但我无法共享我的用户名和密码。您确定您的请求正确吗?我的意思是,你有没有在另一个工具上试用过,比如邮递员或其他什么工具/你能分享你的信息吗?(用户名、密码、url)。我会尽力帮你的,谢谢你的支持,但是我不能分享我的用户名和密码。
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();
}
});