我无法在改造中以行json格式发送数据。
我将改装1.9迁移到2.在retrfit 1.9中我能够使用HashMap发送原始json,但在改造2中我使用HashMap但是我无法以json的形式发送数据。 所以我正在使用pojo。
api生成尝试获取非对象属性的日志,因此我无法在行json中传递数据。
我刚刚在error_log中看到了我的服务器详细信息,我的请求自动转换为GET。我在POST中使用retrofit2,改进1.9,以及任何Asynctask传递数据。我不知道为什么我的服务器把它当作GET。 从邮递员那里工作得很好。
任何帮助对我都有用。 感谢
这是我的代码
我的pojo类请求
public class RegisterdUserData {
@SerializedName("userEmail")
@Expose
private String userEmail;
@SerializedName("userName")
@Expose
private String userName;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("lastName")
@Expose
private String lastName;
@SerializedName("userPassword")
@Expose
private String userPassword;
@SerializedName("userRole")
@Expose
private String userRole;
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserRole() {
return userRole;
}
public void setUserRole(String userRole) {
this.userRole = userRole;
}
请求
@Headers("Content-Type: application/json")
@POST("/api/CreateUser.php")
Call<AppUserData> CreateUser(@Body RegisterdUserData registerdUserData);
我的电话
private void CreateUser(String userEmail, String firstName, String lasName, String userName, String userPassword, String userRole) {
RegisterdUserData registerdUserData = new RegisterdUserData();
registerdUserData.setFirstName(firstName);
registerdUserData.setLastName(lasName);
registerdUserData.setUserEmail(userEmail);
registerdUserData.setUserName(userName);
registerdUserData.setUserPassword(userPassword);
registerdUserData.setUserRole(userRole);
util.http.CreateUser(registerdUserData).enqueue(new Callback<AppUserData>() {
@Override
public void onResponse(Call<AppUserData> call, Response<AppUserData> response) {
util.log(TAG, "" + response);
}
@Override
public void onFailure(Call<AppUserData> call, Throwable t) {
util.log(TAG, "" + t);
}
});
}
答案 0 :(得分:1)
问题在于www。如果我删除它然后它工作正常。我不知道为什么。但它帮助了我。 感谢您的回复@Manikanta @AshutoshSaga
答案 1 :(得分:0)
我建议您以Map<String,Object>
在你的情况下:
Map<String,Object> requestBody = new HashMap()<>;
requestBody.put("userInfo", registerdUserData);
您的请求应该是:
@Headers("Content-Type: application/json")
@POST("/api/CreateUser.php")
Call<AppUserData> CreateUser(@Body Map<String,Object> registerdUserData);
还要交叉检查改装对象的构建方式(在我的例子中是杰克逊)。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(JacksonConverterFactory.create())
.client(client)
.build();
如果您有任何疑问,请发表评论。