【问题标题】:Rest call containing text '${' is not working as expected包含文本“${”的休息呼叫未按预期工作
【发布时间】:2020-03-12 07:08:41
【问题描述】:

我正在通过 post call 向服务器发送数据,当我的 XML/JSON 包含 '$' 和 '{' 像 '${' 一样时,服务器拒绝请求。但同样适用于 RestMan 和 PostMan。 可以通过修改任何请求正文以将“${”放在一起来复制问题

Sample API :- https://reqres.in/api/users - Method- POST , headers---> Content-Type application/json;
Request Body 1: - {
"name": "morpheus",
"job": "leader"
}

Request Body 2:-
{
"name": "morpheus",
"job": "${leader"
}

对于请求正文 1,创建了用户,但对于请求正文 2,我收到以下响应:

<title>Error</title>
Bad Request

同样的请求正文适用于 postman 和 RestMan。

编辑:- 我指定的 API url 只是一个公共 API 来测试休息服务。我无法共享实际代码,因此我使用公共测试 API 和soapUi 复制了该问题。如果它通过 restman 工作正常,我不确定它如何与代码相关。我用soapUi测试了许多API来验证它,问题似乎只出在'${'上。我不确定,但也许 soapUi 在内部使用它来检测表情或其他东西。 如果有帮助,我调试了我的代码,每当我通过soapui提供'${'时,标题中的内容长度值都会增加800-900个字符。

【问题讨论】:

  • 所以问题似乎出在您的代码和您发布数据的方式上。很遗憾您没有共享这部分代码,因此无法为您提供帮助。
  • 我进行了编辑并提供了必要的细节。我为 API 提供的 URL 是用于公共 API 以使用 restclients 测试 REST 服务或直接在应用程序中使用它们。而且问题似乎只有在'${'在一起时才会出现,只有在soapUi中才会出现。其他其余客户端正在按预期给出响应。

标签: rest postman soapui


【解决方案1】:

SoapUI 将字符 ${...} 视为 property expansion

为了从字面上理解,您需要提供一个额外的美元符号:$${something

以后,在请求窗格中,如果您点击“原始”,您将准确看到发送的内容。

【讨论】:

  • 是的,这就是我的猜测。感谢您的确认。我在soapui的端点资源管理器中尝试了同样的方法,它工作正常。所以我查看了源代码,发现项目界面基于 JAVA swing,端点资源管理器基于 HTML 和 JQUERY。所以,就休息而言,我们可以通过使用端点资源管理器来避免这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多