使用Curl的HTTP POST请求:为什么没有工作?

我想提交一个包含以下信息的表单:

<form enctype="mutlipart/form-data" method="post" action="/command"> <input tyep="submit" value=" Generate Snapshot " name="GENERATE_SNAPSHOT" ></input> </form> 

我尝试使用网页(chrome)在“networking”标签下提出这样的要求,我注意到:

 `request URL:http://170.10.10.20:8888/command` Request Mehthod:POST Status Code:200 OK Request Payload: -------WebKitFormBoundaryLhRbxtNE7XU71JAD Content-Disposition: form-data; name="GENERATE_SNAPSHOT" Generate Snapshot -------WebKitFormBoundaryLhRbXtNE7Xu71JAD---- 

我的curl命令如下所示:

 curl -f "GENERATE_SNAPSHOT=%20Generate%20Snapshot%20" http://170.10.10.20:8888/command 

但是,返回值看起来不够灵活,因为它返回了一些如下所示的内容:

 <html><head><head><META HTTP -QUIIV="EXPIRES" CONTENT="TEXT/HTML; .....(and so on) 

为什么这不起作用?

因为你没有发送一个POST请求,而是一个GET请求,你本体的POST请求被curl忽略。 此外,选项-f用于在服务器错误上静默失败,您正在寻找在您的POST请求内强制使用Content-type: multipart/form-data -F

改用:

 curl -XPOST \ -F 'GENERATE_SNAPSHOT= Generate Snapshot ' \ "http://170.10.10.20:8888/command" 

这是-F不是-f
同样在Chrome中,您可以右键点击networking标签中的请求,然后点击“复制为cURL”。
这将Chrome浏览器确切的请求添加到您的剪贴板,准备通过cURL执行。

要执行POST,您需要设置请求方法。

 curl -X POST -f ... http://...