我在Insomnia中有请求。当我通过Insomnia发送它时,没有问题。但是当我生成curl的源代码时,它显示了这个。
curl --request POST \
--url URL \
--header 'Authorization: bearer XXX' \
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
--cookie JSESSIONID=XXX \
--form datasetFile=@FOLDER/producthierarchyl1-1.zip
{"message":"Bad Request","logref":null,"path":null,"_embedded":{"errors":[{"message":"Required argument [Publisher datasetFile] not specified","logref":null,"path":"/datasetFile","_embedded":{},"_links":{}}]},"_links":{"self":{"href":"/data-api/public-api/v4/datasets/ingestion/","templated":false,"profile":null,"deprecation":null,"title":null,"hreflang":null,"type":null,"name":null}}}
失眠的输出是这样的。
> POST PATH HTTP/2
> Host: URL
> user-agent: insomnia/2022.3.0
> cookie: JSESSIONID=XXX
> authorization: bearer XXX
> content-type: multipart/form-data; boundary=X-INSOMNIA-BOUNDARY
> accept: */*
> content-length: 407
* STATE: DO => DID handle 0x170404b14008; line 2077 (connection #27)
* multi changed, check CONNECT_PEND queue!
* STATE: DID => PERFORMING handle 0x170404b14008; line 2196 (connection #27)
| --X-INSOMNIA-BOUNDARY
| Content-Disposition: form-data; name="datasetFile"; filename="producthierarchyl1-1.zip"
| Content-Type: application/zip
| PK�QU�}�%+producthierarchyl1-1.csvUT բ�b
| --X-INSOMNIA-BOUNDARY--
* We are completely uploaded and fine
* HTTP/2 found, allow multiplexing
哪里有猫腻?
- 谢谢-谢谢
2条答案
按热度按时间ldxq2e6h1#
删除
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001
选项。它确实不应该这样使用:curl自己管理头和边界,因此只有在您真正 * 希望 * 和 * 需要 * 摆弄它罕见情况下才应该修改它。
更次要的第二件事:应该从命令行中删除
--request POST
,因为它是多余的,如果以后添加--location
,很容易导致问题。已更新
据说这个缺陷在后来版本的《失眠》中得到了修正
xpszyzbs2#
对于任何再次遇到这个问题的人,this answer正确地解释了问题的原因。
幸运的是,这应该只能在2022.3.0版本和更旧版本的Insomnia中重现。
如果您使用最新的2022.5.1,则生成的curl将不再有此问题,生成的多部分请求的示例: