【问题标题】:How to pass RequestParam in POST request using REST Assured如何使用 REST Assured 在 POST 请求中传递 RequestParam
【发布时间】:2021-08-25 12:52:14
【问题描述】:

这里是 Dev rest 客户端 POST 请求 sudocode

public ResponseDTO upload(@RequestParam("metadata") String metaData, 
    @RequestParam(name="file" , required=false) MultipartFile[] multiPartFiles) 

我正在尝试使用 reassured 创建一个 POST 请求。以下是我的步骤定义代码

 public void havePostCall(String endpoint) {
            String url = be.getBaseUrl()+endpoint;
            FileInputStream fisFile = new FileInputStream(new File("Path of the json file"));
            String reqPayload = IOUtils.toString(fisFile,"UTF-8");
            Response rs = RestAssured.given().header("Authorization","value of token") 
               .queryParam("metadata",reqPayload).when().post(url).then().assertThat().statusCode(200)

                .extract()
                .response () 
           System.out.print("Response is ==" + rs.asString())
          }

正如我们所见,开发者休息客户端上传方法在 POST 请求中期待请求参数,在我的放心代码中,我传递了相同的内容,但我仍然不断收到错误请求。 当我与开发人员核对时,他们说将正文作为请求参数传递。 有人可以帮我在步骤定义代码中做错什么吗? 挣扎了很长时间,非常感谢任何帮助。

【问题讨论】:

  • .queryParam("metadata",reqPayload)--> reqPayloadString 吗?
  • @NandanA 如果您观察到由 Dev 编写的 Rest 客户端正在接受 POST 请求的负载中的请求参数。是的,它是字符串元数据。
  • 你能试试下面提供的解决方案吗?
  • 正在尝试。给我时间会发布答案。
  • 能否提供请求日志?查询参数中的字符串有什么问题吗?

标签: java cucumber rest-assured


【解决方案1】:

这个问题已经解决了。问题是传入queryParam 的密钥。

Response rs = RestAssured.given().header("Authorization","value of token") 
    .queryParam("metaData",reqPayload).when().post(url).then().assertThat().statusCode(200)
    .extract()
    .response () 
System.out.print("Response is ==" + rs.asString())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多