Обновляете документ в Google Docs с помощью API?

Я хочу обновить содержимое уже загруженного файла Google Doc. Я использую следующий код:

DocumentsService service = new DocumentsService("app-v1");
string auth = gLogin2();
service.SetAuthenticationToken(auth);
Stream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(
   "CONTENTS PLEASE CHANGE"));
DocumentEntry entry = service.Update(new Uri("feedURL"), stream, "text/plain", 
    "nameOfDoc") as DocumentEntry;

Для «feedURL» я пытался использовать все возможные ссылки: альтернативные, самостоятельные, редактировать, редактировать-медиа даже resumable-edit-media, но я продолжаю получать исключения.

Также как я могу прочитать ответ с такими запросами?

Я только начал использовать этот API. Раньше я использовал его на уровне протокола, поэтому отправлял запросы GET/POST и получал веб-ответы. Я не знаю, как получить или прочитать ответ в этом случае.

ОБНОВИТЬ:

Теперь код, который я использую:

RequestSettings _settings;
            string DocumentContentType = "text/html";
            _settings = new RequestSettings("Stickies", "EMAIL", "PASSWORD");
            var request = new DocumentsRequest(_settings);


            //var entryToUpdate = doc.DocumentEntry;
            var updatedContent = "new content..."; ;

            var mediaUri = new Uri(string.Format(DocumentsListQuery.mediaUriTemplate, rid));
            Trace.WriteLine(mediaUri);
            var textStream = new MemoryStream(Encoding.UTF8.GetBytes(updatedContent));

            var reqFactory = (GDataRequestFactory)request.Service.RequestFactory;
            reqFactory.CustomHeaders.Add(string.Format("{0}: {1}", GDataRequestFactory.IfMatch, et));
            var oldEtag = et;
            DocumentEntry entry = request.Service.Update(mediaUri, textStream, DocumentContentType, title) as DocumentEntry;
            Debug.WriteLine(string.Format("ETag changed while saving {0}: {1} -> {2}", title, oldEtag,et));
            Trace.WriteLine("reached");

И я получаю следующее исключение: {"Удаленный сервер вернул ошибку: (412) Precondition Failed."} Я получаю это исключение в DocumentEntry entry = request.Service.Update(mediaUri, textStream, DocumentContentType, title) as DocumentEntry;


person Snehil Khanor    schedule 14.04.2012    source источник
comment
@AliAfshar Думаю, даже приведенный выше код неверен. так как я думаю, что мне придется создать для этого запрос документа.   -  person Snehil Khanor    schedule 15.04.2012


Ответы (1)


Решено. Предварительное условие исключения Не удалось выполнить из-за несоответствия Etag Приведенный выше ОБНОВЛЕННЫЙ код отлично работает для сохранения документа.

person Snehil Khanor    schedule 16.04.2012