无法在android中的改造2中以json的形式发送数据

时间:2017-10-10 12:02:04

标签: android json retrofit2

我无法在改造中以行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);
        }
    });
}

2 个答案:

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

如果您有任何疑问,请发表评论。