curl是否需要一些特殊参数来强制执行charset / encoding?

时间:2016-05-05 17:30:28

标签: web-services curl utf-8 character-encoding

我正在使用curl命令将大文件(100+ MB)发送到Web服务。我注意到只有当我使用curl将文件发送到Web服务时,文件才会被破坏并且数据丢失。

这是我用来发送文件的命令:

curl -v --raw -X POST  -H "Transfer-Encoding: chunked" -H "Content-Type: text/xml; charset=UTF-8" -d @medline16n0736.xml "http://localhost:2323/TestWebService"

我错过了什么吗?我想告诉它使用text/xmlcharset=UTF-8会在网络服务收到后保留UTF-8。

1 个答案:

答案 0 :(得分:1)

您要求curl使用-d选项发布XML文件,该选项将发布该文件,就好像它是以application/x-www-webform-urlencoded格式通过HTTP网络表单提交的一样。要单独发布文件,请改用-T选项。此外,您正在使用--raw选项,即使您要发送Transfer-Encoding: chunked标头,也会禁用HTTP传输编码的处理。删除--raw-T将检测标头以启用分块。

您还要求curl发送Content-Type标头告诉WebService上传的数据是UTF-8编码的XML。您有责任确保XML文件实际 UTF-8编码。 Curl不会为您检查。