2009-03-01 9 views
0

Yani bir Google Contact için bir fotoğraf yüklemek için aşağıdaki kodu bir araya getirilebilecek Internet temizleme sonrası:Google İletişim .NET istemci kitaplığı kullanan bir kişi için bir fotoğraf yüklemek nasıl

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 
    ); 

Hizmetidir ClientLogin kimlik doğrulamasını kullanarak. Bu kod çalışmaya başlamadan önce kişiyi başarıyla aldım.

Bu kod çalıştırıldıktan sonra GDataRequestException alıyorum. Döndürülen hata iletisidir, "Geçici bir iç sorun oluştu. Daha sonra tekrar deneyin". InnerException'daki hata iletisi aşağıdakileri içerir: "Uzak sunucu bir hata verdi: (500) Dahili Sunucu Hatası."

Daha fazla araştırma sonrasında, Google hizmetindeki hata kodlarının açıklayıcı olabileceğini ve yalnızca hata 500'ü geri getirebileceğini belirten ipuçları buldum. Ancak bunun ne kadar doğru olduğunu bilmiyorum.

Yani sorun benim kodumda olabilir mi? Veya daha da iyisi, bunun nasıl yapılması gerektiğini göstermek için örnek bir kod var mı?

sayesinde

Deve

cevap

0

Bu sorunu gidermek için iki yol (transkript this Google Contacts API post olan) öğrendim. Öncelikle, bu yüzden gibi dosyayı doğrudan erişen bir akış oluşturabilir:

System.IO.FileStream File = new FileStream(@"C:\test.jpg"); 

Service.Update 
    (
     Contact.PhotoEditUri, 
     File, 
     "image/jpeg", 
     null 
    ); 

İkinci, ben MemoryStream içine konumunu sıfırlamak zorunda çünkü benim orijinal kod oldu neden başarılı. Akarsularda böyle bir noob olmak için aldığım şey bu. Image.Save işlevi tamamlandığında, konum en sonundadır. Yani, tek yapmanız gereken, pozisyonu en baştan sıfırlamaktır:

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 
    );