我已经安装了 Windows 的 cURL 命令行。
现在我想将此 cURL 用于 REST api (redmine)。
我想要创建的最基本的脚本是推送一个新的“过去”。 但问题是,过去可以包含多行文本。
为了放置一个新的过去,我使用:
curl -k -s -H "X-Redmine-API-Key: %API_KEY%" --data-urlencode "paste[text]=%TEXT%" %URL%
但问题是,当 %TEXT% 由多行组成时,Windows cmd 失败。
例如:
curl -k -s -H "X-Redmine-API-Key: XXXXXX" --data-urlencode "paste[text]=ST_METHOD_POST', 'POST', true);
define('HTTP_REQUEST_METHOD_PUT', 'PUT', true);
define('HTTP_REQUEST_METHOD_DELETE', 'DELETE', true);" "https://etc"
cmd 在第一个换行符后停止...
我尝试在运行 cmd 之前解析 TEXT,通过在行末尾添加 ^ 来模拟多行 win cmd,但不起作用...
<小时/>更新1:
我试试
curl -k -s -H "X-Redmine-API-Key: %API_KEY%" --data-urlencode "paste[text]@tmp.txt" %URL%
其中 tmp.txt 等于
hello world
但是请求被转换为
{"paste":{"id":xxx,"author_id":xxx,"project_id":xxx,"title":"Paste #xxx","text":"
■h\u0000e\u0000l\u0000l\u0000o\u0000 \u0000w\u0000o\u0000r\u0000l\u0000d\u0000",
"created_on":"2012-11-26T09:24:15Z","updated_on":"2012-11-26T09:24:15Z"}}
最终结果并不行
最佳答案
以下是在 Windows 上完美发出多行 SSL POST curl 请求的方法(它也适用于批处理/cmd 文件):
curl -i -k -X POST -H "Content-Type: text/xml" -d ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^> ^
^<Transaction^> ^
^<SomeParam1^>AD6084-01^</SomeParam1^> ^
^<Password^>SomePassW0rd^</Password^> ^
^<Transaction_Type^>00^</Transaction_Type^> ^
^<CardHoldersName^>John Smith^</CardHoldersName^> ^
^<DollarAmount^>9.97^</DollarAmount^> ^
^<Card_Number^>4111111111111111^</Card_Number^> ^
^<Expiry_Date^>1118^</Expiry_Date^> ^
^<VerificationStr2^>123^</VerificationStr2^> ^
^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^> ^
^<Reference_No^>Some Reference Text^</Reference_No^> ^
^<Client_Email^>john@smith.com^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "https://example.com/transaction"
关于batch-file - windows cURL 命令和多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541247/