我如何 Curl 命令行 POST 表单数据并返回带有答案的 HTML 页面

我如何 Curl 命令行 POST 表单数据并返回带有答案的 HTML 页面

我正在尝试从支持 Web 的设备读取单个值。该设备有一个简单的 Post 表单,它将返回 HTML 页面。这在浏览器中运行良好,但在命令行中则不行:

# curl -H "Content-Type: text/html"   -X POST -d '{"FGSP":"Read","D900":"100  ","D901":"0    "}' http://192.168.9.187/GSP.htm

返回:

<div id="page">
 <form name="param" method="post">
  <table width="750">
   <tr><td class="cntr">Parameter number</td>
       <td class="cntr"><input name="D900" type="text" value="0    "></input></td>
       <td>&nbsp;</td></tr>
   <tr><td class="cntr">Parameter value</td>
       <td class="cntr"><input name="D901" type="text" value="0     "></input></td>
       <td class="errr">&nbsp                                     </td></tr>
   <tr class="cntr"><td><input type="submit" name="FGSP" value="Read"></input></td>
       <td><input type="submit" name="FGSP" value="Write"></input></td>           </tr>
  </table>
 </form>
</div>

这是不正确的,因为成功发布后,D900 的值应为 100,D901 的值应为 5。所以我假设发布参数没有正确传递?

如果我在 Chrome 浏览器中执行相同操作,则它会起作用:

Chrome 提交表单

如何从命令行复制 Web 浏览器正在执行的操作?

答案1

此帖子请求针对的是嵌入式系统,似乎参数的顺序很重要。因此:

curl -X POST -H "FGSP: Read" -H "D900: 100" -H "D901: 0" -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -H "extra-token: 00000000000000000000000000000000000000000000" -d 'D900=100&D901=0&FGSP=Read' "http://192.168.9.187/GSP.htm"

给出了正确的答案。 curl 命令还需要一个相当长的额外标记(我假设以某种方式填充标头)。

相关内容