在curl抛出错误发布请求

时间:2017-01-09 19:43:21

标签: rest api

我从命令行执行此curl请求:

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

在此命令之后,我有一个要传递的参数列表:

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

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>

任何有关如何解决此问题的建议都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

这可能会奏效:

public class PicassoClient { public static void downloadImage(Context context, String url, ImageView img){ if(url != null && url.length()>0){ Picasso.with(context).load(url).placeholder(R.drawable.placeholder).into(img); } else { Picasso.with(context).load(R.drawable.placeholder).into(img); } } }

错误消息表明POST请求需要填写curl -X POST -d "" https://www.googleapis.com/bigquery/v2/projects/projname/queries?key={AIzaSyB740elm45sh9AkpuaekZW8eJbRi_oDDAc}标头字段,而您没有提供。 Content-length开关会为您填写。您也可以发送-d ""请求,而不需要提供切换。

答案 1 :(得分:0)

以下是HTTP状态代码列表:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

服务器要求您指定请求内容的长度。

如果在请求中添加-d“”,CURL将发送Content-Length:0标头。

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

相关问题