只发布了一个对象的参数

时间:2016-03-23 12:04:47

标签: android post retrofit2

我对Android开发相当新,更不用说Retrofit 2.0

我正在尝试将数据发布到本地API(使用deployd),遵循本教程 https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit

代码运行后,只有对象的一个​​参数" user" (用户名)已发布,可在API中查看。

这是我的服务界面:

public interface serviceInterface{
    String BASE_URL = "http://192.168.0.109:2403";

    @POST("/myojapi")
    Call<User> createUser(@Body User user);

    class myInstance { //just for accessing the methods in the interface

        public static serviceInterface getInstance() {
            Retrofit retrofit = new     Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())
                    .baseUrl(BASE_URL)
                    .build();

            serviceInterface service = retrofit.create(serviceInterface.class);
            service = retrofit.create(serviceInterface.class);
            return service;
        }
    }

    class User {

        @SerializedName("username")
        String uName;

        @SerializedName("password")
        String uPassword;

        public User(String username, String password) {
            this.uName = username;
            this.uPassword = password;
        }

    }
}

这是我的按钮代码,onResponse方法运行因为我可以看到Snackbar消息(在填写用户名和密码EditTexts之后):

    button_submit.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(final View v) {
            serviceInterface.User user = new serviceInterface.User(editText_username.getText().toString(), editText_passsword.getText().toString());
            Call<serviceInterface.User> call = serviceInterface.myInstance.getInstance().createUser(user);

            call.enqueue(new Callback<serviceInterface.User>() {
                @Override
                public void onResponse(Call<serviceInterface.User> call, Response<serviceInterface.User> response) {

                    Snackbar.make(v, "added", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }

                @Override
                public void onFailure(Call<serviceInterface.User> call, Throwable t) {

                }

            });
        }
    });

这是在deployd上看到的数据(id是自动的),如您所见,密码始终为空:

enter image description here

这就是JSON API的外观:

enter image description here

1 个答案:

答案 0 :(得分:0)

错误发生在Deployd,密码字段是默认值,它从未显示任何值,创建一个名为uPassword的新字段。