كيف يمكنني تحميل صورة لجهة اتصال باستخدام مكتبة عميل Google Contact .NET

StackOverflow https://stackoverflow.com/questions/599571

  •  11-09-2019
  •  | 
  •  

سؤال

لذلك بعد تجوب الإنترنت لقد قمت بتجميع التعليمات البرمجية التالية لتحميل صورة لجهة اتصال 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
    );

تستخدم الخدمة مصادقة العملاء. قبل تشغيل هذا الرمز، لقد استرجاع الاتصال بنجاح.

بعد هذا الرمز يعمل، ومع ذلك، أحصل على gdatarequestException. رسالة الخطأ التي تم إرجاعها هي "مشكلة داخلية مؤقتة قد حدثت. حاول مرة أخرى لاحقا". تحتوي رسالة الخطأ في Innirexception على ما يلي، "عاد الخادم البعيد خطأ: (500) خطأ في الخادم الداخلي."

بعد المزيد من البحث، وجدت تلميحات أن رموز الأخطاء من خدمة Google قد لا تكون كلها وصفية - وقد ببساطة إرجاع الخطأ 500. على الرغم من أنني لا أعرف مدى صحيح.

لذلك ربما المشكلة هي مع الكود الخاص بي؟ أو حتى أفضل، هل لدى أي شخص نموذج التعليمات البرمجية لإظهار كيف ينبغي القيام بذلك؟

شكرا،

جمل

هل كانت مفيدة؟

المحلول

لقد اكتشفت طريقتين لحل هذه المشكلة (النص في هذه جهات اتصال Google Post API). أولا، يمكنك إنشاء دفق يصل إلى الملف مباشرة، مثل ذلك:

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

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

ثانيا، السبب وراء فشل رمزك الأصلي لأنني اضطررت لإعادة تعيين الموضع داخل موعد الذاكرة. هذا ما أحصل عليه من أجل كونه مستجد على التدفقات. بمجرد اكتمال الصورة. اكتمال وظيفة، والموقف هو في النهاية. لذلك، كل ما عليك فعله هو إعادة تعيين الموقف إلى البداية:

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
    );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top