Android 服务器的改装参数变为空

Android 服务器的改装参数变为空,android,retrofit,Android,Retrofit,我正在使用改装库进行post请求。但我从服务器得到空字段区域错误。所以我的参数(“signin[password]和signin[username]”在服务器上变为空。我的错在哪里?多谢各位 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myurl.com/") .addConverterFactory(GsonConverte

我正在使用改装库进行post请求。但我从服务器得到空字段区域错误。所以我的参数(“signin[password]和signin[username]”在服务器上变为空。我的错在哪里?多谢各位

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();
                    }
                });