我通过 GAE 中的 servlet 从 Google API 得到了 404 错误,但是通过浏览器得到了正确的响应
I got 404 Error from Google API's via servlet in GAE, but got correct response via browser
我可以通过网络浏览器从 Google API 获得正确的响应。据说,
当我访问
https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXX
通过一些网络浏览器,然后得到正确的响应,如
{
"kind": "blogger#blog",
"id": "4871538073781423026",
"name": "SoffeeShop",
"description": "",
"published": "2012-10-24T23:55:32+09:00",
"updated": "2015-03-04T14:31:00+09:00",
"url": "http://soffeeshop.blogspot.com/",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026",
"posts": {
"totalItems": 58,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/posts"
},
"pages": {
"totalItems": 0,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/pages"
},
"locale": {
"language": "en",
"country": "",
"variant": ""
}
}
虽然,当我在 GAE 中使用 servlet 进行 REST 时,比如
URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXXX");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");
或
URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + access_token);
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");
我刚收到“404 未找到”错误。
我可以通过 OAuth2 在 GAE 的同一个 servlet 中使用相同的 HttpURLConnection 获得 access_token,我不能只访问 Google API。因此,这意味着 Http 连接可以很好地访问其他服务器,但看起来 Google API 拒绝从 GAE 中的 servlet 访问。
如何在 GAE 中通过 servlet 访问 Google API 或 Blogger API?请帮助我。
您可能需要从 google 开发人员控制台在您的 GAE 项目中启用博主 API 它可能会问您一些问题,例如 "how you would like to use the Blogger API?"。
您是否向您的 GAE 应用提供了访问 Blogger 的权限API。我认为当您在应用程序的开发人员控制台中生成 clientId 时,您必须在重定向 URIS 中以 http://app-id.appspot.com 的形式提供应用程序的名称。我认为它会解决您的问题。
我可以通过网络浏览器从 Google API 获得正确的响应。据说, 当我访问 https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXX 通过一些网络浏览器,然后得到正确的响应,如
{
"kind": "blogger#blog",
"id": "4871538073781423026",
"name": "SoffeeShop",
"description": "",
"published": "2012-10-24T23:55:32+09:00",
"updated": "2015-03-04T14:31:00+09:00",
"url": "http://soffeeshop.blogspot.com/",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026",
"posts": {
"totalItems": 58,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/posts"
},
"pages": {
"totalItems": 0,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/pages"
},
"locale": {
"language": "en",
"country": "",
"variant": ""
}
}
虽然,当我在 GAE 中使用 servlet 进行 REST 时,比如
URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXXX");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");
或
URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + access_token);
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");
我刚收到“404 未找到”错误。
我可以通过 OAuth2 在 GAE 的同一个 servlet 中使用相同的 HttpURLConnection 获得 access_token,我不能只访问 Google API。因此,这意味着 Http 连接可以很好地访问其他服务器,但看起来 Google API 拒绝从 GAE 中的 servlet 访问。
如何在 GAE 中通过 servlet 访问 Google API 或 Blogger API?请帮助我。
您可能需要从 google 开发人员控制台在您的 GAE 项目中启用博主 API 它可能会问您一些问题,例如 "how you would like to use the Blogger API?"。
您是否向您的 GAE 应用提供了访问 Blogger 的权限API。我认为当您在应用程序的开发人员控制台中生成 clientId 时,您必须在重定向 URIS 中以 http://app-id.appspot.com 的形式提供应用程序的名称。我认为它会解决您的问题。