curl命令可在Linux上完美运行,但无法在Windows上运行

时间:2019-09-14 04:07:07

标签: xml linux windows curl

我正在用Java编写Windows应用程序以获取一些数据矩阵。我使用的curl命令可以在Linux环境下完美运行。但是,当我将其放在Windows上时,它完全没有用,什么也不做。

我很确定问题出在xml部分。我认为另一端的解析器需要新行来解析它。我尝试了许多方法,例如url编码,从xml文件读取xml部分,解析二进制数据,但这些都不起作用。

这是我正在使用的curl命令。

curl -s -d "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<ewe mask=\"0x100\" hw_type=\"4\" br=\"BT\" release=\"5.5.0-0\">
  <probe>
    <core>
      <cam1>
        <cam1Tunings>
          <camTuningList xmlChil=\"list1\" UsedTuningId=\"1\" CamTuningVer=\"Jan  1 00:40:26\">
            <preset name=\"$FREQ MHz\" tuningId=\"1\" frequency=\"$FREQ.000M\" chSpacing=\"10\" symbolRate=\"3.154175 M\" modulation=\"256\" annex=\"1\" etrholds=\"ATSC Default\" pidThresholds=\"Default\" serviceThresholds=\"Default\" camThresholds=\"Default\" vbcThresholds=\"Default\" extractThumbs=\false\" disable=\"true\" referenceThresholds=\"[None]\"></preset>
          </camTuningList>
        </cam1Tunings>
      </cam1>
    </core>
  </probe>
</ewe>" -o output.html "http://$ADDR/probe/core/datalog.xml?"

我真的很感谢在此问题上的任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

如果不熟悉要与之交互的系统,则很难调试它。但是,我有一些想法可以用来调查此问题。

  1. 您的命令使用$FREQ$ADDR,它们似乎是shell变量。如果是这样,它们是否已在您的Windows环境中设置?
  2. 请考虑在Windows和Linux上同时使用Wireshark来查看正在发送的确切HTTP请求,并进行比较。任何区别都应该给您提示问题的地方。

(不幸的是,这个问题在这里几乎没有话题。)

答案 1 :(得分:0)

我通过将xml查询分离到.xml文件并从文件中读取查询来解决了这个问题。