Не удалось отправить запрос API, когда Content-Type является multipart / form-data - PullRequest
1 голос
/ 08 января 2020

Я хочу запустить этот вид API с каратэ, но не получилось.

В этой ситуации параметры запроса являются одновременно объединением «Query String Parameters» и «From Data»; и тип содержимого является 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 голосов
/ 08 января 2020

РЕДАКТИРОВАТЬ: на основе добавленного вами cURL это мое лучшее предположение относительно того, какой запрос вы делаете, обратите внимание, что вы можете сформировать url включая параметр запроса вручную вместо использования param:

* url 'http://xcx.sys.saas.biosan.cn/nda/labprocess/list?usertoken=962b3afe2d354edda3fcf3f7e03ff0ea'
* multipart field STARTDATE = ''
* multipart field ENDDATE = ''
* multipart field ITEMID = ''
* multipart field QCREAGENTNUM = ''
* multipart field PROCESSNUM = ''
* multipart field INSTRUMENTINFO = ''
* multipart field SRCWAY = '0'
* multipart field PAGENUM = '1'
* multipart field PAGESIZE = '30'
* multipart field LABIDS = '2fdf2349-0488-463b-93ad-886e649978e8'
* method post
...