我对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是自动的),如您所见,密码始终为空:
这就是JSON API的外观:
答案 0 :(得分:0)
错误发生在Deployd,密码字段是默认值,它从未显示任何值,创建一个名为uPassword的新字段。