2010-11-27 4 views
1

Я пытаюсь использовать проект gdata из приложения Android. Я пытаюсь загрузить новый CSV-файл в Google Документы, но я продолжаю сталкиваться с ошибкой 411 (Content-Length). Мой код выглядит примерно так:загрузка csv с gdata - ошибка 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); 

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

Что мне не хватает? Благодарю.

+0

Я не уверен в GData - нет необходимости добавлять `\ n` в конец файла/содержимого, правильно? Я бы заподозрил, что класс TextConstruct будет проблемой здесь. – 2010-11-27 10:32:01

ответ

1

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

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

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