改造参数对于服务器是空的

时间:2016-01-27 12:58:24

标签: android retrofit

我正在使用改装库来发布请求。但是我从服务器得到空的区域错误。所以我的参数("登录[密码]和登录[用户名]")变为空的服务器。我的错误在哪里?谢谢

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

3 个答案:

答案 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)

将接口类更改为(删除路径中的斜杠)

 PlsqlAuthenticationMode CustomOwa

您可以在我的回答here

中查阅原因