1

我正在尝试对 Fusion Table API 进行 REST 调用。我正在为 REST 使用 spring 模板

当我将我的 URL 定义为:

String URI = "https://www.googleapis.com/upload/fusiontables/v1/tables/tableid/import";

例外 :

 Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized

这很好,意味着它击中了谷歌服务器。

但是当我使用:

URL  :String URI = "https://www.googleapis.com/upload/fusiontables/v1/tables/tableid/import"+"&Authorization:""&Content-Type: application/octet-stream";

它的抛出异常:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 404 Not Found

我无法理解。

4

1 回答 1

4

您将请求标头附加到您的 URL 字符串,这是不正确的。这两个标题:

  • 授权: ””
  • 内容类型:应用程序/八位字节流

不应添加到请求 URL 相反,如果您使用 Apache HttpComponents:

final HttpPost post = new HttpPost();
post.addHeader("Authorization", "");
post.addHeader("Content-Type", "application/octet-stream");

或者,使用 HttpUrlConnection:

conn.setRequestProperty("Authorization", "");
conn.setRequestProperty("Content-Type", "application/octet-stream");

或者,使用 Spring RestTemplate:

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "");
headers.add("Content-Type", "application/octet-stream");
HttpEntity<String> entity = new HttpEntity<String>(helloWorld, headers);

在RestTemplateHttpEntity的文档页面上有大量关于 Spring 特定选项的信息。

于 2012-12-16T07:53:08.467 回答