我想提交一个包含以下信息的表单:
<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://...