загрузка csv с помощью gdata - ошибка длины содержимого - PullRequest
1 голос
/ 27 ноября 2010

Я пытаюсь использовать проект gdata из приложения для Android.Я пытаюсь загрузить новый CSV-файл в Google Docs, но я все еще сталкиваюсь с ошибкой 411 (Content-Length).Мой код выглядит примерно так:

GoogleService ss = new SpreadsheetService("testApp");
ss.setUserCredentials("<username>", "<password>");

DocumentListEntry newEntry = null;
newEntry = new DocumentListEntry();
newEntry.setTitle(new PlainTextConstruct("my.csv"));
TextConstruct tc = TextConstruct.plainText("1,2,3,4,5,6,7,8,9,10");         
newEntry.setContent(new TextContent(tc));

DocumentListEntry res = ss.insert(new URL("https://docs.google.com/feeds/default/private/full/"), newEntry);

Поскольку библиотека GData абстрагирует от меня сетевые вызовы, я предполагаю, что мне не нужно самому устанавливать Content-Length, что приводит меня к убеждению, чтопросто неправильно использую библиотеку.

Чего мне не хватает?Спасибо.

1 Ответ

1 голос
/ 13 апреля 2012

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

newEntry.setFile(/* java.io.File instance */ file, /* MIME type */ "text/csv");

Для этого требуется загрузить данные из файла, но вы можете использовать потоки для загрузки из памяти. Более подробный пример может быть найден на странице проекта клиентской библиотеки Java.

...