karate - 使用 Multipart 字段在空手道中上传 XML 文件并获取 415 不受支持的媒体类型
问题描述
- 我正在尝试使用 multipart 字段以及指定的内容类型作为 application/x-www-form-urlencoded 上传 XML 文件,但边界会自动附加到请求中,并且我得到 415 不支持的媒体类型作为响应:
Request:
1 > Accept: application/json
1 > Accept-Encoding: gzip,deflate
1 > Authorization: Bearer Pr3wkHwNDDfPh4Ik4IPLhGDcK1zt
1 > Connection: Keep-Alive
1 > Content-Length: 6739
1 > Content-Type: application/x-www-form-urlencoded; boundary=eeErrSgIwFHJn3_hjEi_-Q8_DHkKIo
1 > Host: api-sandbox.apiboitest.com
1 > User-Agent: Apache-HttpClient/4.5.9 (Java/1.8.0_144)
1 > client_id: jYXMYDGq0uTZee5peZpzwR
1 > client_secret:
1 > request_method: POST
1 > x-fapi-financial-id: 1234
1 > x-idempotency-key: qwe3456
1 > x-jws-signature: qqqqq
--eeErrSgIwFHJn3_hjEi_-Q8_DHkKIo
Content-Disposition: form-data; name="myFile"
Content-Type: application/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
``````````````````````````````````````````````
and Code:
``````````````````````
And multipart field myFile = read('classpath:path')
And multipart field message = 'File'
When method request_method
Then status 200
``````````````````````
while in postman it works fine.
解决方案
这是我最好的猜测。这是一个 url 编码的形式而不是文件上传。剩下的就看你了:
* url 'http://api-sandbox.boicloudtest.net/1/api/open-banking/v3.0/pisp/file-payment-consents/4a90e5cb-8450-4743-8cc9-d655d0d615d2/file'
* header x-fapi-financial-id = '0015800000jfQ9aAAE'
* header x-jws-signature = 'ey'
* header x-idempotency-key = 'ghty66'
* form field FileParam = read('FilePayments.xml')
* method post
推荐阅读
- php - 如何在 for 循环中执行此操作?
- node.js - 当我在heroku上上传我的网站进行生产时,我遇到了这个问题,这个错误有什么解决方案吗?
- filebeat - 有没有办法使用 ELK 从 HTTP GET 请求中解析 HTML?
- json - 如何使用 Json 为我的不和谐 webhook 获取动画颜色
- javascript - 为什么 z-index 没有效果?
- android - 带有 android 的 Flutter 应用程序无法捕获回调 url
- python - macOS Conda 环境在 VSCode 中激活但未使用正确版本的 Python 或未找到已安装的包
- cassandra - cassandra 选择查询以在至少一列值条件为真时选择行
- python - 带有joblib的python中的并行循环引发奇怪的错误
- google-apps-script - DataStudio 不显示期间选项的维度