简体   繁体   English

在 curl 抛出错误中发布请求

[英]Post request in curl throwing error

I execute this curl request from command line:我从命令行执行这个 curl 请求:

 curl -X POST https://www.googleapis.com/bigquery/v2/projects/projname/queries?key={AIzaSyB740elm45sh9AkpuaekZW8eJbRi_oDDAc} \ 

After this command, I have a list of parameters to be passed:在这个命令之后,我有一个要传递的参数列表:

{ 
 "query": "SELECT * FROM [red-road-574:TestSridevi.Trucks] LIMIT 20", 
 "defaultDataset": { 
  "datasetId": "TestSridevi", 
  "projectId": "red-road-574" 
 } 
}

Bur after executing the first command itself, I get the error: Bur 在执行第一个命令本身后,我收到错误消息:

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 411 (Length Required)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>411.</b> <ins>That’s an error.</ins>
  <p>POST requests require a <code>Content-length</code> header.  <ins>That’s all we know.</ins>

Any advice on how to resolve this would be appreciated.任何有关如何解决此问题的建议将不胜感激。

This will probably work:这可能会起作用:

curl -X POST -d "" https://www.googleapis.com/bigquery/v2/projects/projname/queries?key={AIzaSyB740elm45sh9AkpuaekZW8eJbRi_oDDAc}

The error message said that POST requests needs their Content-length header field filled out, which you did not provide.错误消息说 POST 请求需要填写它们的Content-length标头字段,您没有提供。 The -d "" switch fills out that for you. -d ""开关为您填写。 You could also just send a GET request instead, for which you don't need to provide the switch.您也可以只发送一个GET请求,您不需要提供开关。

Here is a list of HTTP status codes:以下是 HTTP 状态代码列表:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

The server wants you to specify the length of the request's content.服务器希望您指定请求内容的长度。

If you add -d "" onto the request CURL will send a Content-Length: 0 header.如果将 -d "" 添加到请求 CURL 将发送 Content-Length: 0 标头。

I found this here: https://serverfault.com/questions/315849/curl-post-411-length-required我在这里找到了这个: https : //serverfault.com/questions/315849/curl-post-411-length-required

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM