كيفية استخدام الوصول إلى الشبكة
يعد الوصول إلى الإنترنت حالة استخدام شائعة للإضافات وخوارزميات cBot والمؤشرات. في السابق، كان على الخوارزميات طلب أذونات خاصة لإجراء أي عمليات متعلقة بالشبكة، مما قد يثير بعض المخاوف لدى المستخدمين، خاصة إذا تم توزيع هذه الخوارزميات بدون أي شفرة مصدرية. لحسن الحظ، تسمح cTrader الآن لجميع الخوارزميات بالوصول إلى موارد الويب دون الحاجة إلى حقوق وصول مرتفعة.
في هذه المقالة والفيديو المصاحب لها، سنوضح كيفية استرداد الأخبار من واجهة برمجة تطبيقات (API) مجانية تستخدم JSON للتسلسل وإلغاء التسلسل.
استهلاك نقطة نهاية API
في مثالنا، سنستخدم cBot الخاص بنا لقراءة معلومات الأخبار من مصدر خارجي وطباعتها في السجل. لهذا الغرض، سنستخدم واجهة برمجة تطبيقات (API) مجانية مقدمة من NewsData.
لمعرفة كيف تبدو واجهة برمجة التطبيقات (API) في المتصفح، يمكننا ببساطة الوصول إلى هذا الرابط.
https://newsdata.io/api/1/news?apikey=pub_32606381862bbdf07962c72ae7bc6135d6332&&language=en
كما نرى، توفر نقطة النهاية سلسلة من أزواج المفتاح-القيمة التي يمكننا استهلاكها بسهولة باستخدام cBot. سنبدأ بإضافة مساحات الأسماء التي تحتوي على العديد من الفئات والطرق لإلغاء تسلسل وقراءة البيانات بتنسيق JSON.
1 2 3 4 5 6 7 8 9 10 11 12 | |
يمكننا بعد ذلك التصريح عن HttpClient() بسيط سيصل إلى الإنترنت.
1 | |
بعد ذلك، سنتمكن من قراءة البيانات في طريقة OnStart().
1 2 3 4 | |
سيعيد الطلب استجابة خام بتنسيق JSON. يمكننا رؤية كيف تبدو باستخدام MessageBox.
1 2 3 | |
إلغاء تسلسل بيانات JSON
لإلغاء تسلسل بيانات JSON الخاصة بنا، سنستخدم فئة JsonSerialiser. ومع ذلك، قبل أن نتمكن من القيام بذلك، سيتعين علينا تحديد الفئات المطلوبة لإلغاء التسلسل.
NewsItem- تمثل هذه الفئة مقالة إخبارية واحدة.News- تحتوي هذه الفئة على مجموعة من كائناتNewsItem.
1 2 3 4 5 6 7 8 9 | |
إذا كنت ترغب في تجنب كتابة هذا الكود الجاهز، يمكنك أيضًا استخدام محول عبر الإنترنت من JSON إلى C#.
باستخدام المحول، قمنا بتعريف فئاتنا على النحو التالي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
يمكننا الآن كتابة كود إلغاء التسلسل الخاص بنا.
1 | |
بالإضافة إلى ذلك، يمكننا إضافة الكود التالي لطباعة عناوين الأخبار في السجل.
1 2 3 4 5 6 7 | |
إذا قمنا ببناء وتشغيل cBot الخاص بنا، سنرى ظهور استثناء في السجل. ومع ذلك، إذا قمنا بتغيير حقوق الوصول لـ cBot إلى AccessRights.FullAccess، سنرى أن cBot الخاص بنا يعمل كما هو مقصود.
الوصول إلى الإنترنت دون حقوق وصول مرتفعة
لتجنب حدوث موقف يحتاج فيه cBot الخاص بنا إلى طلب حقوق وصول مرتفعة، يمكننا تعديل طريقة OnStart() الخاصة بنا إلى ما يلي.
1 2 3 4 | |
إذا قمنا بتعيين حقوق الوصول إلى AccessRights.None وإعادة بناء cBot الخاص بنا، يجب أن نرى عناوين الأخبار تُطبع في السجل دون أي مشاكل. ببذل المزيد من الجهد، يمكن تحويل cBot الخاص بنا إلى قارئ أخبار فاخر متاح مباشرة داخل أي رسم بياني لـ cTrader!