当尝试通过在App Engine环境上执行的HEAD请求检查BigQuery中数据集的存在时,我们遇到了奇怪的错误。请参阅下面的代码。
bigquery.datasets().get(projectNumber, datasetId).executeUsingHead();
如果在本地开发服务器上运行,该代码可以成功运行,但是,当部署在Google基础架构上时,我们会收到IOException。
...
Caused by: java.io.IOException:
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:148)
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:43)
at com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:79)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:399)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUsingHead(AbstractGoogleClientRequest.java:382)
at com.google.api.services.bigquery.Bigquery$Datasets$Get.executeUsingHead(Bigquery.java:322)
...
任何想法都会受到赞赏。
答案 0 :(得分:0)
您是否有理由不使用execute()而不是executeUsingHead()? datasets.get()操作仅返回单个数据集对象,通常非常小。