google-bigquery如何使用https获取数据集列表?

时间:2013-02-15 13:15:19

标签: qt google-bigquery

我正在尝试使用https get

从bigquery webserver获取数据集列表

遵循此处的文档: https://developers.google.com/bigquery/docs/reference/v2/datasets/list

我正在使用稍微修改过的代码:
http://code.google.com/p/qt-google-bigquery/source/browse/manager_bigquery.cpp

getDatasetsList(QString strProjectID)
{
QString url = QString("https://www.googleapis.com/bigquery/v2/projects/%1/datasets?key=%2").arg(str_ProjectID).arg(this->api_key);
//Also tried without ?key= part

QNetworkRequest request;
request.setUrl( QUrl(url) );    //this also urlencodes
request.setRawHeader("Content-Type", "application/json");
request.setRawHeader("Authorization", (QString("Bearer %1").arg(m_Access_Token)).toLatin1());

//here i post the request as a http get asynchronously
}

我收到此错误消息:

Reply =  "{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required parameter is missing"
   }
  ],
  "code": 400,
  "message": "Required parameter is missing"
 }
}

注意:
我设法运行查询并获得结果,所以我的访问令牌似乎有效,我在这里做错了什么?

解决

啊,实际上问题出在我的编码中,而不是请求,我将其发布为http帖子,而不是获取。

1 个答案:

答案 0 :(得分:0)

请参阅上面原始海报的评论中的答案 - 但基本上确保您使用GET而不是POST方法进行API调用以列出数据集。其他BigQuery API方法使用POST,PUT或PATCH。

https://developers.google.com/bigquery/docs/reference/v2/datasets/list