如何使用 Google Contact .NET 客户端库上传联系人照片
题
因此,在搜索互联网后,我拼凑了以下代码来上传 Google 联系人的照片:
System.Drawing.Bitmap Image = new Bitmap( @"C:\test.jpg" );
System.IO.MemoryStream Memory = new MemoryStream();
Image.Save( Memory, System.Drawing.Imaging.ImageFormat.Jpeg );
Service.Update
(
Contact.PhotoEditUri,
Memory,
"image/jpeg",
null
);
该服务正在使用 ClientLogin 身份验证。在此代码运行之前,我已成功检索到联系人。
但是,运行此代码后,我收到 GDataRequestException。返回的错误消息是“发生临时内部问题。稍后再试”。InnerException 中的错误消息包含以下内容:“远程服务器返回错误:(500内部服务器错误。”
经过更多研究后,我发现 Google 服务中的错误代码可能并不那么具有描述性,可能只是返回错误 500。虽然我不知道这有多真实。
那么问题可能出在我的代码上吗?或者更好的是,有人有示例代码来演示如何完成此操作吗?
谢谢,
骆驼
解决方案
我找到了两种方法来解决这个问题(文字记录在 此 Google 通讯录 API 帖子)。首先,您可以创建一个直接访问文件的流,如下所示:
System.IO.FileStream File = new FileStream( @"C:\test.jpg" );
Service.Update
(
Contact.PhotoEditUri,
File,
"image/jpeg",
null
);
其次,我原来的代码失败的原因是我必须重置MemoryStream内的位置。这就是我作为流媒体菜鸟所得到的结果。一旦 Image.Save 函数完成,该位置就位于末尾。因此,您所要做的就是将位置重置到开头:
System.Drawing.Bitmap Image = new Bitmap( @"C:\test.jpg" );
System.IO.MemoryStream Memory = new MemoryStream();
Image.Save( Memory, System.Drawing.Imaging.ImageFormat.Jpeg );
Memory.Seek( 0, SeekOrigin.Begin );
Service.Update
(
Contact.PhotoEditUri,
Memory,
"image/jpeg",
null
);
不隶属于 StackOverflow