2009-03-01 2 views
0

은 그래서 구글 연락처의 사진을 업로드하려면 다음 코드를 함께 조합해서 인터넷을 수색 후 :나는 구글 연락 .NET 클라이언트 라이브러리를 사용하여 연락처 사진을 업로드하려면 어떻게

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) 내부 서버 오류." 나는이게 얼마나 진실을 알고하지 않습니다하지만 단순히 오류 500을 반환 할 수 있습니다 -

아직 더 많은 연구 후에, 나는 Google 서비스에서 오류 코드가 모든 것을 설명하지 않을 수 있습니다 힌트를 발견했다.

그래서 어쩌면 문제는 내 코드인가? 아니면 더 나은, 아무도이 수행되어야하는 방법을 보여주기 위해 샘플 코드가 있습니까?

감사합니다,

낙타

답변

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 
    ); 
: 그래서, 당신이 할 일은 시작 부분에 위치를 재설정됩니다