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

使用Rest Assured发送JSON正文,但服务器忽略它

安明亮
2023-03-14
Map<String, Object>  jsonAsMap = new HashMap<>();
    jsonAsMap.put("username", "John");
    jsonAsMap.put("email", "testkdd@test.test");

    response = restAssured.given()
            .contentType(JSON)
            .header("Authorization", db.getAuthToken())
            .body(jsonAsMap)
            .when()
            .log().all()
            .post(apiCreateManager_POST);
    response.then().log().all();
Request method: POST
Request URI:    https://myapplication/api/v1/manager/managers
Proxy:          <none>
Request params: <none>
Query params:   <none>
Form params:    <none>
Path params:    <none>
Headers:        Authorization=Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXU....
                Accept=*/*
                Content-Type=application/json; charset=UTF-8
Cookies:        <none>
Multiparts:     <none>
Body:
{
    "email": "testkdd@test.test",
    "username": "John"
}
HTTP/1.1 422 Unprocessable Entity
Server: nginx/1.12.0
Date: Tue, 05 Mar 2019 10:52:54 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.1.20-1+ubuntu16.04.1+deb.sury.org+1
Cache-Control: private, must-revalidate
pragma: no-cache
expires: -1

{
    "errors": {
        "username": [
            "This value should not be null.",
            "This value should not be blank."
        ],
        "email": [
            "This value should not be blank."       
        ]
    }
}

服务器没有看到我的JSON参数。我用邮差检查服务器,一切正常。

共有1个答案

车思淼
2023-03-14

我找到解决办法了!问题出现在content-type=application/json中;Charset=UTF-8

您应该避免将字符集自动添加到content-type头:

RestAssured.config = RestAssured.config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false));

之后我们有:

Content-Type=application/json
 类似资料:
  • 问题内容: 我的网页上的表单有问题。我正在尝试使用ajax和json将表单值发送到php服务器,但是我无法正确地创建json对象。 我的JS代码 我的PHP代码 我知道已经问过类似的问题,但是答案并没有帮助我。 感谢您的帮助。 问题答案: 我能够获取json对象并在php端进行解析。某些变量的名称可能有所不同,部分原因是其中一些是预先编写的代码。这是我采取的步骤。 资料夹结构 Index.html

  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc

  • 问题内容: 最近5个小时,我一直在尝试将json对象发布到PHP脚本中。我已经阅读了所有文档,似乎代码应该可以,但事实并非如此。发出并接收到请求,但是我无法访问发布的json数据,甚至不知道它是否已正确发送。我不断得到一个空的php数组,而不是json数据。 这是php脚本(test.php) 我正在使用来自https://github.com/pokeb/asi-http- request.gi

  • 我用这个代码发送后数据到服务器使用android。有人能给我任何想法或您的示例如何发送POST或GET json数据到服务器TOMCAT...!步骤提示: > 创建HttpClient 向给定URL发出POST请求 构建jsonObject 转换JSONObject到JSON到String 设置json为StringEntity 设置http帖子实体 设置一些头来通知服务器内容的类型 对给定URL

  • 问题内容: 我目前正在尝试从Android应用程序向php服务器发送数据(两者均由我控制)。 应用程序中的表单上收集了很多数据,这些数据已写入数据库。所有这一切。 在我的主代码中,首先我创建一个JSONObject(在此示例中,我已在此处将其裁剪): 接下来,我将对象传递给发送对象,并接收响应: HTTPPoster类: 这将获得响应,但是服务器返回403-禁止响应。 我试过稍微更改doPost函

  • 我正在AWS上运行CoreNLP专用服务器,并试图从Ruby发出请求。服务器似乎正确地接收了请求,但问题是服务器似乎忽略了input annotators列表,并且总是默认为所有annotators。我生成请求的Ruby代码如下所示: 在服务器上的nohup.out日志中,我看到以下内容: 当我在命令行上使用wget运行测试查询时,它似乎工作得很好。 任何关于为什么会发生这种情况的帮助都将被接受,