منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيفية تحويل اسعار العملات بإستخدام Yahoo Exchange Rates Web Service
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

الأخوة الأعضاء الكرام, كيف حالكم جميعاً؟
اليوم بإذن الله سوف نتعلم معاً كيفية الحصول على أسعار العملات بإستخدام خدمة الويب الخاصة بخوادم Yahoo عن طريق Visual Basic.NET.

فالحقيقة ليست Yahoo فقط من تقدم تلك الخدمة. فالعديد من الـ Web Services تُمكنك من الحصول على أسعار العملات مُحدثة يومياً ولكن يُمكنك القول أن أفضلها وأسرعها هي Yahoo Exchange Rates Web Service وذلك بحكم عملي وتجربتي مع أكثر من خدمة فلم أجد خدمة أسرع وأكثر إستقراراً من Yahoo فهي أفضل من Google ذاتها.

شرح بسيط لفكرة الخدمة:

خدمات الويب تُشبه -في غايتها- إلى حد كبير ما تُقدمة لك دوال البرمجة كائنية التواجه -Object Oriented Function- فالأمر ليس أكثر من إرسال مُعاملات -Parameters- والحصول على قيمة او نتيجة -Returned Value- ولكن انت هنا تتعامل داخل تطبيقات سطح المكتب -Desktop Applications- وهناك تتعامل مع تطبيقات الويب -Web Applications- وبنفس الطريقة الخدمة تستقبل منك مُعاملين فقط هما:

1-اسم العملة المُحول منها.
2-اسم العملة المُحول إليها.

مثال اريد ان اعرف كم ين ياباني يُساوي الـدولاار امريكية .

وبالنهاية تُعطيك نتيجة نصية -String- تحتوي على قيمة مزدوجة -Double Data Type- لقيمة التحويل وقيمة تاريخ ووقت -Date Time Data Type- لتوقيت الحصول على السعر للمُزامنة على الشكل التالي:


كود :
'Returns: ""SAREGP=X",1.8355,"11/19/2013","8:53pm""
SAR=Saudi Arabia Reial, EGP=Egyptian Pound, 1.8355=Exchange Rate, 11/19/2013=Date of Rate, 8:83pm=Time of Rate.

ولكن تُمرر المعاملات بصيغة خاصة بالخدمة وتعتمد على الإختصارات العالمية للعملات الورقية تبعاً لكل دولة. فمثلاً الين الياباني حينما أريد أرساله سوف يكون في السياق النصي "JPY" كذلك الدولار الأمريكي سيكون في السياق التالي "USD" ... إلخ.

وفي التالي إليك الإختصارات العالمية الخاصة بجميع العملات الورقية حول العالم والتي سوف تقوم إستخدامها داخل خدمة الويب -موضح اسم العملة الكامل بعد علامة تنصيص-:


إقتباس :EGP 'Egyptian Pound
AED 'United Arab Emirates Dirham
ANG 'Netherlands Antillean Guilder
ARS 'Argentine Peso
AUD 'Australian Dollar
BDT 'Bangladeshi Taka
BGN 'Bulgarian Lev
BHD 'Bahraini Dinar
BND 'Brunei Dollar
BOB 'Bolivian Boliviano
BRL 'Brazilian Real
BWP 'Botswanan Pula
CAD 'Canadian Dollar
CHF 'Swiss Franc
CLP 'Chilean Peso
CNY 'Chinese Yuan
COP 'Colombian Peso
CRC 'Costa Rican Colón
CZK 'Czech Republic Koruna
DKK 'Danish Krone
DOP 'Dominican Peso
DZD 'Algerian Dinar
EEK 'Estonian Kroon
EUR 'Euro
FJD 'Fijian Dollar
GBP 'British Pound Sterling
HKD 'Hong Kong Dollar
HNL 'Honduran Lempira
HRK 'Croatian Kuna
HUF 'Hungarian Forint
IDR 'Indonesian Rupiah
ILS 'Israeli New Sheqel
INR 'Indian Rupee
JMD 'Jamaican Dollar
JOD 'Jordanian Dinar
JPY 'Japanese Yen
KES 'Kenyan Shilling
KRW 'South Korean Won
KWD 'Kuwaiti Dinar
KYD 'Cayman Islands Dollar
KZT 'Kazakhstani Tenge
LBP 'Lebanese Pound
LKR 'Sri Lankan Rupee
LTL 'Lithuanian Litas
LVL 'Latvian Lats
MAD 'Moroccan Dirham
MDL 'Moldovan Leu
MKD 'Macedonian Denar
MUR 'Mauritian Rupee
MVR 'Maldivian Rufiyaa
MXN 'Mexican Peso
MYR 'Malaysian Ringgit
NAD 'Namibian Dollar
NGN 'Nigerian Naira
NIO 'Nicaraguan Córdoba
NOK 'Norwegian Krone
NPR 'Nepalese Rupee
NZD 'New Zealand Dollar
OMR 'Omani Rial
PEN 'Peruvian Nuevo Sol
PGK 'Papua New Guinean Kina
PHP 'Philippine Peso
PKR 'Pakistani Rupee
PLN 'Polish Zloty
PYG 'Paraguayan Guarani
QAR 'Qatari Rial
RON 'Romanian Leu
RSD 'Serbian Dinar
RUB 'Russian Ruble
SAR 'Saudi Riyal
SCR 'Seychellois Rupee
SEK 'Swedish Krona
SGD 'Singapore Dollar
SKK 'Slovak Koruna
SLL 'Sierra Leonean Leone
SVC 'Salvadoran Colón
THB 'Thai Baht
TND 'Tunisian Dinar
TRY 'Turkish Lira
TTD 'Trinidad and Tobago Dollar
TWD 'New Taiwan Dollar
TZS 'Tanzanian Shilling
UAH 'Ukrainian Hryvnia
UGX 'Ugandan Shilling
USD 'US Dollar
UYU 'Uruguayan Peso
UZS 'Uzbekistan Som
VEF 'Venezuelan Bolívar
VND 'Vietnamese Dong
XOF 'CFA Franc BCEAO
YER 'Yemeni Rial
ZAR 'South African Rand
ZMK 'Zambian Kwacha

والأن إلى البرمجة:

الـ Module التالي يحتوي على Function قمت بعملها وأعتمد عليها داخل عملي الخاص وتحتوي على ثلاثة مُعاملات -Parameters- فقط وتعود إليك بـ قيمة مزدوجة -Double Data Type-:


PHP كود :
Imports System.Net 'System.Net.dll
Imports System.Web.Script.Serialization '
System.Web.Extensions.dll
Module mdlCurrencyRate
Public Function Get_Currency_Rate(ByVal currFromName As StringByVal currToName As String) As Double
Dim result 
As Double 0.0
Dim wbServiceLink 
"http://www.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s={0}{1}=X"
Dim url As String String.Format(wbServiceLinkcurrFromNamecurrToName)
Dim client As New WebClient()
Dim rates As String client.DownloadString(url'Returns: ""SAREGP=X",1.8355,"11/19/2013","8:53pm""
Dim rate_part As String = Split(rates, ",")(1)
If Double.TryParse(rate_part, result) Then
result = CDbl(rate_part)
End If
Return result
End Function
End Module 

يتطلب المثال أعلاه المكتبات -يتضمنها المِثال المُرفق بالموضوع- الخاصة بـ System.Net, System.Web.Extensions Name Spaces.

مثال إستخدام الـ Function:

PHP كود :
Dim Saudi_Rial_To_Egypt_Pound As Double Get_Currency_Rate("SAR""EGP"'Result= 1.8355 

المثال السابق يأتي بسعر عملة الريال السعودي بالنسبة للجنية المصري.

مُرفق بالموضوع Visual Studio 2010 Project.

إذا كان هُناك أي إستفسار إن شاء الله أنا مُتواجد -قدر المُستطاع-.

أتمنى أن يكون الموضوع مُفيداً إليك. ووفقنا الله وإياكم.
السلام عليكم

اهلا وسهلا بك اخي الكريم بيننا من جديد

يعطيك العافية
وعليكم السلام ورحمة الله وبركاته

اهلا بأخي الكريم الليث لم أنسى تعليق وشعار "شايفك" Smile
بدأت أشعر هنا بأن الشمل قد اجتمع مرة أخرى بفضل الله.

وفقنا الله وإياكم جميعاً.
سلام عليكم أستاذي الكريم
والله فرحان انك نورتنا في المنتدى الجديد Big Grin
جزاك الله كل خير على مجهودك العظيم جعله الله في ميزان حسناتك

بعد إذن حضرتك تم تعديل الموضوع " لكي أضيف رابط المرفقات " وتم إعتمادها .

بالنسبة لمشاركاتك القديمة بالمنتدى القديم فهي لازالت معنا بحمد الله تستطيع ان تطلب رابط التحميل من الإدارة

بالتوفيق

مــوضـوع قـوي بارك الله فيــك هكذا المواضيع ولا بـلاش ")
وعليكم السلام ورحمة الله وبركاته
بالفعل كود رائع ومميز شكراً لك
شكرا جدا علي هذا الكود الرائع والشرح المتميز
انت رائع يا صديقي 
كنت بامس الحاجة لهذا الكور
شكرا كثيرا 
وللامام 
بالتوفيق
بارك الله فيك
السلام عليكم
أعلم ان الوقت الان بعيد عن تاريخ المشاركة
ولكن الان yahoo ثم اغلاقها
هل يوجد خدمة ثانية تعمل محلها