Gae Java - после получения токена авторизации (с ClientLogin) невозможно получить URL фида электронных таблиц с 2 запросами http - PullRequest
0 голосов
/ 01 февраля 2011

У меня проблема с использованием движка приложений Google с таблицей Google.Я получаю токен авторизации с другим сервлетом (от google ClientLogin) и затем пытаюсь получить xml фида электронных таблиц с GET-запросом и заголовком авторизации (как описано в документации google).1003 *

public class My2Servlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

    URLFetchService urlFetchService = URLFetchServiceFactory.getURLFetchService();

    HTTPRequest tokenRequest = new HTTPRequest(new URL("http://localhost:8888/myGae/getauthtoken"), HTTPMethod.GET);
    HTTPResponse tokenResponse = urlFetchService.fetch(tokenRequest);

    String token = Utils.getText(tokenResponse.getContent()); /*this token is OK*/

    HTTPRequest spreadsheetFeedRequest = new HTTPRequest(new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full"), HTTPMethod.GET);
    spreadsheetFeedRequest.setHeader(new HTTPHeader("Authorization", "GoogleLogin auth=" + token));
    HTTPResponse spreadsheetFeedResponse = urlFetchService.fetch(spreadsheetFeedRequest); /*here the problems!!!*/


    String spreadsheetFeed = Utils.getText(spreadsheetFeedResponse.getContent());

    resp.setContentType("text/plain");
    resp.getWriter().println(spreadsheetFeed);
} 

}

Я могу правильно получить токен, но когда я пытаюсь выполнить второй запрос на подачу электронной таблицы, у меня появляется ошибка 400 Bad Request, и если я повторяю попытку перезагрузить эту ошибку:

java.io.IOException: Could not fetch URL: https://spreadsheets.google.com/feeds/spreadsheets/private/full

Кажется, что работает только первый запрос ... на самом деле, если я комментирую второй запрос и получаю токен, тогда комментирую первый запрос и выполняю второй запрос с токеном, написанным от руки, я правильноесть вывод в формате XML для фида электронных таблиц ...

Почему я не могу выполнить два последующих запроса?

1 Ответ

0 голосов
/ 05 февраля 2011

Я реализовал google-oauth (3-legged) и использовал клиентскую библиотеку gdata. Я объясняю только для вашей информации, так как это не решение, а просто предложение.

Вы можете скачать его с здесь . См. документацию .

Затем используйте следующий код:

Получить фид электронных таблиц:

SpreadsheetFeed resultFeed = googleService.getFeed(feedUrl, SpreadsheetFeed.class);
if (resultFeed.getEntries().isEmpty()) {
   out.println("<br/>|\tNo entries found.");
} else {
   List<SpreadsheetEntry> spreadsheets = resultFeed.getEntries();
   for (int i = 0; i < spreadsheets.size(); i++) {
       SpreadsheetEntry entry = spreadsheets.get(i);
       out.println("<br/>" + entry.getTitle().getPlainText());
   }
}
...