如何计算bash中对API的POST请求的Content-Length



我正在使用bash脚本向RESTful API发送POST请求。

内容长度不正确。请帮忙看看我算错了没有。

POST请求是否在我的请求中添加了更多的字节?

请求正文(这与正文完全相同,只是信息被X、X或0屏蔽(:

--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--1234--

我将其设置为271,它API捕获了以下内容:

--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00

我的建议是而不是重新发明轮子。cURL等工具以方便可靠的方式创建多部分/表单数据请求,无需自行计算内容长度:

以下是如何将请求指定为cURL命令:

curl 
--request POST 
--header 'Content-Type: multipart/form-data' 
--form 'xxxxx=XXX-XX' 
--form 'xxx_xxxx=XXXX00000000Xx0000000000000000000XX00.pdf' 
--form 'xxx_xx=XXXX00000000Xx0000000000000000000XX00' 
$'http://example.com/'

下面是您得到的原始请求的外观。请注意,cURL已包含正确的内容长度标头:

POST / HTTP/1.1
Host: example.com
User-Agent: curl/7.60.0
Accept: */*
Content-Length: 416
Content-Type: multipart/form-data; boundary=------------------------b5a1c465b6242b10
Connection: close
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--------------------------b5a1c465b6242b10--

最新更新