多部分字段请求在空手道中不起作用

问题描述 投票:0回答:1

我有一个空手道功能,其中有一个没有文件的 POST 多部分表单请求。 我无法访问服务器来调试它或查看代码是如何编写的。 这是功能文件片段:

Given url apiurl
And multipart field RI = xmlRIString
And multipart field CI = xmlCIString
And multipart field BI = xmlBaseString

“xmlRIString”、“xmlCIString”和“xmlBaseString”是 XML 字符串。 这段代码不起作用,我不能 100% 确定原因。我怀疑这些字段由于某种原因是空的。

这是从服务器上运行的 Postman 日志中取出的请求(请求正文已修改为不共享敏感数据):

POST /submit HTTP/1.1
User-Agent: PostmanRuntime/7.22.0
Accept: */*
Cache-Control: no-cache
Postman-Token: ceac2d58-dd33-426b-bde5-26a0846d6385
Host: localhost:8001
Content-Type: multipart/form-data; boundary=--------------------------725566702214297796531881
Accept-Encoding: gzip, deflate, br
Cookie: some-cookie-value-here
Content-Length: 47864
Connection: keep-alive
----------------------------postman
Content-Disposition: form-data; name="RI"
 
<REQUEST_GROUP>some xml here</REQUEST_GROUP>
----------------------------postman
Content-Disposition: form-data; name="CI"
 
<REQUEST>some xml here</REQUEST>
----------------------------postman
Content-Disposition: form-data; name="BI"
 
<ABOUT_VERSIONS>some xml here</ABOUT_VERSIONS>
----------------------------postman--

这也是同样有效的 cURL 请求:

curl --location --request POST 'http://localhost:8001/upload' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------725566702214297796531881' \
--form 'RI=<REQUEST_GROUP>some xml here</REQUEST_GROUP>' \
--form 'CI=<REQUEST>some xml here</REQUEST>' \\
--form 'BI=<ABOUT_VERSIONS>some xml here<ABOUT_VERSION>'

所以我问的问题是我应该如何创建我的空手道功能,这样它就会产生我上面分享的请求。

提前致谢!

karate
1个回答
0
投票

您应该能够使用 cURL 命令和

https://httpbin.org/anything

快速解决这个问题

在空手道中尝试这个片段:

* url 'https://httpbin.org/anything'
* multipart field RI = '<foo></foo>'
* multipart field CI = '<bar></bar>'
* multipart field BI = '<baz></baz>'
* method post

您可以看到服务器响应此部分:

"form": {
  "BI": "<baz></baz>", 
  "CI": "<bar></bar>", 
  "RI": "<foo></foo>"
 }

这个 cURL 命令会得到相同的结果:

curl --location --request POST 'https://httpbin.org/anything' \
--form-string 'RI=<foo></foo>' \
--form-string 'CI=<bar></bar>' \
--form-string 'BI=<baz></baz>'

现在您应该能够弄清楚这一点,请注意,通过 cURL 发送 XML 可能很棘手:https://stackoverflow.com/a/72046269/143475

© www.soinside.com 2019 - 2024. All rights reserved.