执行POST请求的行语法?

分享于 

6分钟阅读

电脑

  繁體

问题:


回答 1:

使用字段:


curl --data"param1=value1&param2=value2" https://example.com/resource.cgi



使用单独指定的字段:


curl --data"param1=value1" --data"param2=value2" https://example.com/resource.cgi



多部分:


curl --form"fileupload=@my-file.txt" https://example.com/resource.cgi



带有字段和文件名的多部分:


curl --form"fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi



没有数据:


curl --data '' https://example.com/resource.cgi



curl -X POST https://example.com/resource.cgi



curl --request POST https://example.com/resource.cgi



有关更多信息,请参见cURL手册中的cURL。 关于模拟网络浏览器插件的 cURL教程很有用。

使用 libcurl,在提交表单之前,使用 curl_formadd() 函数来构建表单。 有关更多信息,请参见 libcurl文档

对于大型文件,请考虑添加参数以显示上载进度:


curl --tr-encoding -X POST -v -# -o output -T filename.dat 


 http://example.com/resource.cgi



需要 -o output,否则将不显示进度条。


回答 2:

对于包含XML的RESTful HTTP POST:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header"Content-Type:text/xml"

或者对于 JSON,使用以下方法:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header"Content-Type:application/json"

这将读取名为 filename.txt的文件的内容,并将它的作为post请求发送。


回答 3:

-d @-的stdin中的数据

例如:


echo '{"text":"Hello **world**!"}' | curl -d @- https://api.github.com/markdown



输出:


<p>Hello <strong>world</strong>!</p>




回答 4:


curl -d"name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi 



示例中找到的示例为 Curl示例手动

如果上面的字符不起作用,请使用 & 作为符号:


curl -d"name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi 




回答 5:

如果你想登录到网站,请执行以下操作:


curl -d"username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login


curl -L -b headers http://localhost/



第一个请求将会话 cookie ( 登录成功时提供) 保存在"页眉"文件中。 从现在开始,你可以使用这个cookie对你通常在登录浏览器后访问的网站的任何部分进行身份验证。


回答 6:


curl -v --data-ascii var=value http://example.com



还有许多选项,请检查 curl --help 以获得更多信息。


回答 7:

如果你偷懒,你可以让谷歌chrome为你做所有的工作。

  • 右键单击要提交的表单,并选择 Inspect。 这将打开DevTools面板。
  • 在devtools中选择网络 tab,并选中保留记录。
  • 提交表单并使用 Method ( 右键单击任何列标题,并确保已经检查方法 ) locate找到条目。
  • 右键点击行,并选择 Copy复制
  • chrome devtools: copy as cURL

    Chrome 将在cURL语法中复制所有请求数据。

    Chrome 使用 --data 'param1=hello&param2=world' 根据要发送的POST请求类型,可以使用单个 -d 或者 -F 更多可以读性,这可以是 application/x-www-form-urlencoded 或者 multipart/form-data

    这将被发布为 application/x-www-form-urlencoded ( 用于大多数不包含文件上传文件的表单。):

    
    curl http://httpbin.org/post 
    
    
     -H"User-Agent: Mozilla/2.2" 
    
    
     -d param1=hello 
    
    
     -d name=dinsdale
    
    
    
    

    对于 multipart/form-data 帖子,请使用 -F ( 通常用于包含文件上传的表单,或者字段顺序是重要的,或者需要使用同一个 NAME的多个域。):

    
    curl http://httpbin.org/post 
    
    
     -H"User-Agent: Mozilla/2.2" 
    
    
     -F param1=hello 
    
    
     -F name=dinsdale 
    
    
     -F name=piranha
    
    
    
    

    通常不需要 User-Agent 标头,但我只是把它放到了。 你可以通过创建包含 比如 User-Agent:"Mozilla/2.2"~/.curlrc 文件,避免在每个请求上设置 User-Agent。



pos  syn  POST  Request  post-request  
相关文章