アップロード済みの 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;