因此,在搜索互联网之后,我拼凑了以下代码来上传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.虽然我不知道这是多么真实。
所以问题可能在于我的代码?或者甚至更好,有没有人有示例代码来演示如何做到这一点?
谢谢,
骆驼
答案 0 :(得分:0)
我找到了解决此问题的两种方法(成绩单位于this Google Contacts API post)。首先,您可以创建直接访问文件的流,如下所示:
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
);