Попытка получить электронную таблицу Google на Java возвращает ошибку HTTP 405 - PullRequest
0 голосов
/ 12 февраля 2011

Я работал над этим весь день и не нашел нигде с ним.

Мой код Java выглядит так:

final URL url = new URL(String.format("https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=%s&exportFormat=tsv&gid=0", spreadsheetId));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
conn.setRequestProperty("Authorization",   "GoogleLogin auth=" + wiseAuth.getAuthToken());    
conn.setRequestProperty("GData-Version", "3.0");

conn.setRequestMethod("GET");

conn.setDoOutput(true); // trouble here, see below

conn.setInstanceFollowRedirects(true);    
conn.connect();

Я всегда получаю ошибку FileNotFound при попытке сделать conn.getInputStream().Я сузил это до того, что код ответа 405 Метод не разрешен.Исключением является возвращение мне моего URL-адреса, и я могу нормально обращаться к странице в своем браузере.

Именно тогда я обнаружил, что setDoOutput(true) выполняет POST внутри.Но если я удалю эту строку, conn.getInputStream() будет нулевым, а conn.getOutputStream(), кажется, ничего не возвращает - хотя, может быть, я неправильно ее настраиваю?

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Я не рекомендую вам делать это так, даже если вы работаете сейчас, вы не можете быть уверены, что это заработает в будущем, если Google начнет его менять.

Вместо этого рассмотрите возможность использования Google Spreadsheet API . Приведенные примеры Java довольно просты, и вы должны быть в состоянии выполнить то, что вы хотите.

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

Я бы рекомендовал использовать веб-отладчик, такой как Fiddler , чтобы увидеть, что именно ваше приложение отправляет в GET-запросе, и сравнить его с вашим браузером.Возможно, вы упустили важный заголовок или что-то в этом роде, и Fiddler позволяет очень просто медленно сократить запрос вашего браузера до необходимых элементов (просто перетащите запрос, чтобы клонировать его, а затем удалите заголовки).

...