【问题标题】:curl command runs perfectly on linux but failed to run on windowscurl 命令在 linux 上运行完美,但在 windows 上运行失败
【发布时间】:2019-09-14 04:07:07
【问题描述】:

我正在用 java 编写一个 windows 应用程序来获取一些数据矩阵。我正在使用在 Linux 环境中完美运行的 curl 命令。但是,当我把它放在 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?"

我非常感谢您对此事的任何帮助或建议。

【问题讨论】:

  • 您尝试过使用--show-error、--verbose 和--trace 选项来卷曲吗?
  • 感谢您的建议。我会尝试使用它。

标签: xml linux windows curl


【解决方案1】:

如果不熟悉您尝试与之交互的系统,将很难进行调试。不过,我有一些想法可以用来调查这个问题。

  1. 您的命令使用$FREQ 和$ADDR,它们似乎是shell 变量。如果是这种情况,它们是否已在您的 Windows 环境中设置?
  2. 考虑在 Windows 和 Linux 上使用 Wireshark 来查看正在发送的确切 HTTP 请求,并比较两者。任何差异都应该让您知道问题所在。

(不幸的是,这个问题在这里大多是题外话。)

【讨论】:

  • 感谢您的回复。是的。我在 windows 环境中设置了 FREQ 和 ADDR 变量。我也确实使用过wireshark来比较两个版本的差异,这就是我发现windows版本缺少xml新行的地方。不幸的是,我也无法直接访问我正在尝试连接的系统。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多