Javascript 为什么在终端中使用curl调用时POST工作在从I调用时失败

Javascript 为什么在终端中使用curl调用时POST工作在从I调用时失败,javascript,ios,xml,curl,instruments,Javascript,Ios,Xml,Curl,Instruments,当从终端调用时,对web服务的调用会起作用 curl-X POST-d@request.xml”http://some 网站“ 在本例中,request.xml是一个由格式良好的xml语句组成的文件,其中包含curl调用使用的数据。这工作得很好,服务器返回对POST的预期响应 以下是xml语句(对隐藏专有值进行了一些更改) 当我尝试使用以下java脚本命令从内部工具调用相同的web服务时,服务器会使用无效的参数语句进行响应 var host = target.host();

当从终端调用时,对web服务的调用会起作用

curl-X POST-d@request.xml”http://some 网站“

在本例中,request.xml是一个由格式良好的xml语句组成的文件,其中包含curl调用使用的数据。这工作得很好,服务器返回对POST的预期响应

以下是xml语句(对隐藏专有值进行了一些更改)

当我尝试使用以下java脚本命令从内部工具调用相同的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);
var-host=target.host();
var loginXML=”
";
var xmlength=loginXML.length+1;
var result=host.performTaskWithPathArgumentStimOut(“/usr/bin/curl”
[“-X POST”,
“-d”+loginXML
/“-v”
  "http://some 网站“]
 5);
UIALogger.logDebug(“exitCode:+result.exitCode”);
UIALogger.logDebug(“stdout:+result.stdout”);
logDebug(“stderr:+result.stderr”);

尝试将XML内容放在引号中;即,替换:

    "-d " + loginXML, 
与:


在对curl的调用中。如果没有这个,它可能会处理
这就是我问题的答案:从Instruments调用的curl将参数后面的空格视为值的一部分。例如:
-d

考虑“d”和“也许在HTTP报头中的东西”之间的空格?我已经尝试了有或没有这些标题:-H内容类型=“text /xml”和-h内容长度=。没有帮助,所以为了清楚起见,我把它们排除在外。格式将是“代码> -h”内容类型:文本/XML。“
。但这并不能修复您的
无效参数
错误-您得到的错误是来自curl本身,而不是目标站点。很抱歉,我没有在这里说清楚。终端的curl版本从我期望的服务器获得响应。Instruments版本从服务器得到响应,但它的答案是我向它发送了无效数据。我认为问题在于数据在Instruments版本的调用中打包的方式。如果我在Instruments中输入一个简单的URL到某个URL,如www.apple.com,它会工作。。。但是,只要我将
-d…
作为参数添加到我试图从中获取数据的服务器,服务器就会返回无效的响应结果。谢谢您的提示。我应该在我的OP中指出我已经尝试过了,但没有成功。如果您手动运行curl并使用完整的XML文件(甚至是精简版本)而不是对该文件的引用,它是否有效?是的,在这两种情况下都可以正常工作。当我使用curl命令中嵌入的xml运行它时,xml必须包含在单引号中。这样:curl-X POST-d“”网站我刚刚意识到我说的文件中的xml不准确。xml还包含以下内容:。对此表示抱歉。我应该在发布之前仔细检查一下。@Custom_软件从命令行运行时,是否将xml放在一行上?
    "-d '" + loginXML + "'",