Avatar ·

كيفية إجراء طلب HTTP في C#؟

مرحبًا أيها الزملاء!

واجهت مهمة تبدو بسيطة — تنفيذ طلب HTTP إلى واجهة برمجية خارجية من تطبيق وحدة تحكم .NET 6. قرأت عدة دروس تعليمية، لكن الأمثلة في كل مكان متفرقة: في بعضها يستخدمون HttpClient، وفي البعض الآخر WebClient (هل هو قديم؟)، وفي البعض الآخر RestSharp. أريد فهم النهج الحديث والصحيح.

حاولت كتابة طلب GET بسيط عبر HttpClient، لكن التطبيق يتجمد. إليك الكود:
var client = new HttpClient();\nvar response = await client.GetAsync("https://api.github.com/zen");\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);

أقوم بتشغيله في الطريقة Main (بدون async)، أحصل على تحذير بأن الكود غير المتزامن لا يُنتظر. حاولت إضافة .Result — حدث deadlock. كما أنه غير واضح ما إذا كان يجب استدعاء Dispose() لـ HttpClient وكيفية التعامل مع الأخطاء بشكل صحيح (مهلة، 404، إلخ).