当前位置: 首页 > 知识库问答 >
问题:

无法发送数据作为json在改装2在Android

荣曾笑
2023-03-14

我无法在改型中以行json格式发送数据。

我将改装版1.9迁移到2。在Retrfit1.9中,我可以使用HashMap发送原始json,但在改型2中,我使用HashMap发送,但无法将数据作为json发送。所以我用pojo来代替。

api生成试图获取非对象属性的日志,因此我无法在json行中传递数据。

我刚刚在错误日志中看到了我的服务器详细信息,我的请求自动转换为GET。我在POST中使用Reformation2、Reformation1.9和其他异步任务传递数据。我不知道为什么我的服务器被当作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个答案

晏阳飙
2023-03-14

我建议您以Map的形式发送数据

在您的情况下:

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

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

袁安志
2023-03-14

问题在于www。如果我删除它,那么它就可以正常工作。我不知道为什么。但是它帮助了我。感谢您的回复@Manikanta@AshutoshSaga

 类似资料:
  • 无法使用改型2.0在api数据中发送原始数据 MyInterface: 有人能推荐一种解决方案,使用在api中发送原始数据吗?我对改型还不熟悉;当我在方法中得到响应时,请提供帮助。

  • 问题内容: 这是我的 在我的控制器中 但是当我在Chrome中看到“网络”标签时, 如何将其作为有效载荷发送?所以那URL是 和数据一样 我的端点希望数据是请求的一部分,以便可以将其解析为 问题答案: 我正在共享我的代码库中的代码,该代码在按照@lucuma的建议进行更改后有效 The UserService looks like and ProfileController looks like

  • 问题内容: 我在从Java servlet内的JavaScript检索以JSON形式发送的数据时遇到查询。以下是我在做什么… 这是JavaScript内向Servlet发出请求的代码的一部分 在发出此请求时,我尝试检索从Servlet中的JavaScript发送的参数,但这样做时,我首先对如何从请求中检索数据感到困惑 我在servlet中使用了以下内容: 注意: 我的Servlet中的内容类型设置

  • 无法在react native expo应用程序中以“Multipart/formdata”内容类型发送表单数据。当我们在react-native应用程序的post请求中发送formData对象时,我们无法获取req。需求主体。来自节点后端的文件

  • 问题内容: 我正在制作一个需要以JSONP格式返回数据的Web服务。我正在使用JSP的JSON标记库,我以为所有必须添加的都是括号,但是我找不到一个很好的资源来验证这一点。 例如,曾经的Web服务功能都使用以下功能返回: 这样对吗? 谢谢! 问题答案: JSONP只是一种黑客,它允许Web应用程序跨域检索数据。可以说它违反了同源起源策略(SOP)。它的工作方式是使用Javascript将“ scr

  • 这是为了与ecomdash api一起使用,因为使用此方法时,所有json字符串都必须用方括号括起来,就像有一个产品数组一样。因此,对于一系列产品来说,json_encode确实可以像预期的那样工作,但如果只更新一个产品,则必须手动在json周围添加方括号。因此,在设置请求时,必须使用body而不是json。这是最后一段有效的代码。 我已经到处搜索,尝试了一百万件事,但我一直得到相同的错误时,试图