Content-Type为multipart / form-data时,发送API请求失败

时间:2020-01-08 08:21:58

标签: api karate

我想用空手道运行这种API,但是失败了。

在这种情况下,请求参数都是“查询字符串参数”和“来自数据”的组合;内容类型是multipart / form-data。

尝试了很多方法,总是失败。我不知道如何组合请求正文并获得传递的API请求。

请帮助,非常感谢。

this is my karate script, in fact, I have no idea how to write correctly

Feature: get lab data list
  Background:
    * url xcxSaasBaseURL
    #  * url baseURL

  Scenario: get lab data list
    Given path "/nda/labprocess/list"
    * params {usertoken: '#(token)'}
    * multipart field LABIDS = '2fdf2349-0488-463b-93ad-886e649978e8'
    When method post
    Then status 200
    * print "response result:", response

这是从chrome导出的卷曲副本:

curl 'http://xcx.sys.saas.biosan.cn/nda/labprocess/list?usertoken=962b3afe2d354edda3fcf3f7e03ff0ea' -H 'Proxy-Connection: keep-alive' -H 'Accept: application/json, text/plain, */*' -H 'Origin: http://172.16.10.33:8090' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybgsYtgWxwfnBKz5f' -H 'Referer: http://172.16.10.33:8090/' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9' --data-binary $'------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="STARTDATE"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="ENDDATE"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="ITEMID"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="QCREAGENTNUM"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PROCESSNUM"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="INSTRUMENTINFO"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="SRCWAY"\r\n\r\n0\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PAGENUM"\r\n\r\n1\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PAGESIZE"\r\n\r\n30\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="LABIDS"\r\n\r\n2fdf2349-0488-463b-93ad-886e649978e8\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f--\r\n' --compressed --insecure
curl 'http://xcx.sys.saas.biosan.cn/nda/labprocess/list?usertoken=962b3afe2d354edda3fcf3f7e03ff0ea' -H 'Proxy-Connection: keep-alive' -H 'Accept: application/json, text/plain, */*' -H 'Origin: http://172.16.10.33:8090' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybgsYtgWxwfnBKz5f' -H 'Referer: http://172.16.10.33:8090/' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9' --data-binary $'------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="STARTDATE"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="ENDDATE"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="ITEMID"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="QCREAGENTNUM"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PROCESSNUM"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="INSTRUMENTINFO"\r\n\r\n\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="SRCWAY"\r\n\r\n0\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PAGENUM"\r\n\r\n1\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="PAGESIZE"\r\n\r\n30\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f\r\nContent-Disposition: form-data; name="LABIDS"\r\n\r\n2fdf2349-0488-463b-93ad-886e649978e8\r\n------WebKitFormBoundarybgsYtgWxwfnBKz5f--\r\n' --compressed --insecure

1 个答案:

答案 0 :(得分:0)

编辑:基于您添加的cURL,这是我对所发出的请求的最佳猜测,请注意,您可以手动形成包含查询参数的url而不是使用{{1} }:

param