【问题标题】:How to encode special characters in Wiremock request body?如何在 Wiremock 请求正文中编码特殊字符?
【发布时间】:2020-01-21 15:14:14
【问题描述】:

我正在使用 Wiremock 服务器来模拟响应并使用 JSON 格式来模拟响应。

{
  "request":
  {
    "url": "/token",
    "method": "POST",
    "bodyPatterns" : [{
      "contains": "username=test_user@gmail.com&password=passwordtest_security_token"
    }]
  },
  "response":
  {
    "status": 200,
    "headers":
    {
      "Content-Type" : "application/json"
    },
    "jsonBody": {"message": "ok"}
}

这不起作用,因为电子邮件中的 '@' 未编码。我需要通过 "test_user%40gmail" 才能使请求生效。

这里的变化只在一个地方。但对于其他模拟,请求正文有许多特殊字符**(@,%*\n\s)**。有什么方法可以处理 Wiremock 中的编码部分。

另外,有没有办法对url中的字符串进行编码?

【问题讨论】:

    标签: json wiremock wiremock-standalone


    【解决方案1】:

    在上面的示例中,缺少一个防止在 WireMock 中加载的荣誉。下面的例子就完成了:

    {
        "request": {
            "url": "/token",
            "method": "POST",
            "bodyPatterns": [{
                    "contains": "username=test_user@gmail.com&password=passwordtest_security_token"
                }
            ]
        },
        "response": {
            "status": 200,
            "headers": {
                "Content-Type": "application/json"
            },
            "jsonBody": {
                "message": "ok"
            }
        }
    }
    

    在您的问题中,您强调需要使用%40 而不是@。我一直无法复制这种情况。因为我不确定您是通过表单还是原始字符串发布。

    如果您使用常规表单数据选项,这会导致匹配失败。

    但是将其作为原始主体发送,结果却完全相反。该示例的行为与您所描述的完全一样。下面是我的 Postman 结果的截图:

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多