2

アップロード済みの 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」については、alternate、self、edit、edit-media、resumable-edit-media など、考えられるすべてのリンクを使用してみましたが、例外が発生し続けます。

また、そのようなリクエストのレスポンスを読むにはどうすればよいですか?

この API を使い始めたばかりです。以前は、プロトコル レベルで使用していたので、GET/POST 要求を送信し、Web 応答を受信して​​いました。この場合、応答を取得または読み取る方法がわかりません。

アップデート:

今私が使用しているコードは次のとおりです。

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) 前提条件が失敗しました。"}DocumentEntry entry = request.Service.Update(mediaUri, textStream, DocumentContentType, title) as DocumentEntry;

4

1 に答える 1

0

解決済み.. 例外前提条件の失敗は、Etag の不一致が原因でした 上記の UPDATED コードは、ドキュメントの保存に完全に機能します。

于 2012-04-16T04:53:50.443 に答える