从终端调用时,对 Web 服务的调用有效...
curl -X POST -d @request.xml "http://some web site"
在此示例中,request.xml 是一个由格式良好的 xml 语句组成的文件,其中包含curl 调用所使用的数据。这工作得很好,服务器返回了对 POST 的预期响应。
这是 xml 语句(进行了一些更改以隐藏专有值)
<account token="999999999999999999999" username="test@emailaccount.com" password="111111122222233333334444455555"><login ver="3.0.7" mdmac="02:00:00:00:00:00" os="7.0" lan="en" bndl="APPL" mod="iPhone"/></account>
当我尝试使用以下 java 脚本命令从 Instruments 内部调用相同的 Web 服务时,服务器会使用无效的参数语句进行响应。
var host = target.host();
var loginXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<account token=\"999999999999999999999\" username=\"test@emailaccount.com\" password=\"111111122222233333334444455555\">
<login ver=\"3.0.7\" mdmac=\"02:00:00:00:00:00\" os=\"7.0\" lan=\"en\" bndl=\"APPL\" mod=\"iPhone\"/>
</account>";
var xmlLength = loginXML.length + 1;
var result = host.performTaskWithPathArgumentsTimeout("/usr/bin/curl",
["-X POST",
"-d " + loginXML,
// "-v",
"http://some web site"],
5);
UIALogger.logDebug("exitCode: " + result.exitCode);
UIALogger.logDebug("stdout: " + result.stdout);
UIALogger.logDebug("stderr: " + result.stderr);
最佳答案
尝试将 XML 内容放在引号中;即替换:
"-d " + loginXML,
与:
"-d '" + loginXML + "'",
在对curl的调用中。如果没有这个,它可能会治疗<?xml
作为 -d
的值,以及 XML 的其余部分作为进一步的(无效)参数。
关于javascript - 为什么在终端中使用curl 调用时POST 工作在从I 调用时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515163/