C# İle Doviz Kuru Çekme
-
Muridler Garantibankasından anlık kur çekmek istiyorumda sürekli null döndürüyor geçemedim sorun nerede.
birde doviz.com sitesinden de çekmem lazım yardımcı olurmusunuz.
Kod Aşağıda
var url = new Uri("https://www.garantibbva.com.tr/doviz-kurlari");
var client = new WebClient();
var html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var usdcek = doc.DocumentNode.SelectNodes("//*[@id=\"cells-template-home\"]//div/div/currency-converter-page//div[2]/div[2]/div[2]")[0]; // siteden aldığımız xpath i buraya yazıp kaynak kısmını seçiyoruz
var eurocek = doc.DocumentNode.SelectNodes("//*[@id=\"cells-template-home\"]//div/div/currency-converter-page//div[2]/div[3]/div[3]/text()")[0]; // siteden aldığımız xpath i buraya yazıp kaynak kısmını seçiyoruz
if (eurocek != null)
{
txtusd.Text = usdcek.InnerHtml;
txteuro.Text = eurocek.InnerHtml;
}
-
-
Hocam doviz.com ile bir çekiyorsun iki çekiyorsun en nihayetinde engelliyor. Sağlam bir proxy ile yapabilirsin ancak. Muhtemelen null dönmesinin sebebide bu. Garanti bankasınında öyle olduğunu düşünüyorum. Daha önce bununla çok uğraştım. En sonunda foreks.com şirketinden servis olarak alabiliriz durumu oldu. Maliyeti aylık 150 dolardı. Firma kabul etmedi. Projede rafa kalktı böylece.
-
Hocam çekememen normal zira döviz kurları sayfa yüklendikten sonra XHR ile ikinci bir istek ile gerçekleşiyor; aşağıdaki arkadaşı deneyebilirsin, göndermen gereken zaruri header bilgilerini de içeriyor ve cevap olarak json dönüyor; guid ve x-client-trace-id "-" karakterleri olamdan standart GUID, random oluşturup da gönderebilirsin sanırım. credentials omit ile de çalıştığına göre sanırım zaruri headerleri karşılasan yetecek, session bazlı bir geçici bir kontrol var gibi hissettirmedi.
fetch("https://customers.garantibbva.com.tr/internet/digitalpublic/currency-convertor-public/v1/currency-convertor/currency-list-detail", { "headers": { "accept": "application/json", "channel": "Public", "client-type": "ArkClient", "content-type": "application/json", "dialect": "TR", "guid": "17ef4075c7384d4dbc174a3120a54c57", "ip": "127.0.0.1", "state": "", "tenant-app-id": "", "tenant-company-id": "GAR", "tenant-geolocation": "TUR", "x-client-trace-id": "17ef4075c7384d4dbc174a3120a54c57" }, "referrer": "https://webforms.garantibbva.com.tr/", "referrerPolicy": "strict-origin-when-cross-origin", "body": null, "method": "GET", "mode": "cors", "credentials": "include" }).then((response) => response.json()).then(console.log);
[ { "currCode": "USD/TL", "exchBuyRate": 28.166, "exchSellRate": 29.166, "changeRatio": -0.74, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "us/tr", "currDesc": "Amerikan Doları" }, { "currCode": "TL/USD", "exchBuyRate": 0.03428649797709662, "exchSellRate": 0.035503798906482996, "changeRatio": 0.78, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/us", "currDesc": "Türk Lirası" }, { "currCode": "EUR/TL", "exchBuyRate": 30.047, "exchSellRate": 31.114, "changeRatio": -0.86, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "eu/tr", "currDesc": "Avrupa Para Birimi" }, { "currCode": "TL/EUR", "exchBuyRate": 0.032139872726104, "exchSellRate": 0.03328119279794988, "changeRatio": 0.9, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/eu", "currDesc": "Türk Lirası" }, { "currCode": "ALT/TL", "exchBuyRate": 1749.9070000000002, "exchSellRate": 1808.274, "changeRatio": -0.63, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "au/tr", "currDesc": "Altın (Gram)" }, { "currCode": "TL/ALT", "exchBuyRate": 0.0005530135366653505, "exchSellRate": 0.0005714589403894034, "changeRatio": 0.66, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/au", "currDesc": "Türk Lirası" }, { "currCode": "GBP/TL", "exchBuyRate": 34.504, "exchSellRate": 35.73, "changeRatio": -0.47, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "uk/tr", "currDesc": "İngiliz Sterlini" }, { "currCode": "TL/GBP", "exchBuyRate": 0.0279876854184159, "exchSellRate": 0.028982146997449575, "changeRatio": 0.5, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/uk", "currDesc": "Türk Lirası" }, { "currCode": "CHF/TL", "exchBuyRate": 31.131, "exchSellRate": 32.236, "changeRatio": -1, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "ch/tr", "currDesc": "İsviçre Frangı" }, { "currCode": "TL/CHF", "exchBuyRate": 0.031021218513463213, "exchSellRate": 0.03212232180141981, "changeRatio": 1.05, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/ch", "currDesc": "Türk Lirası" }, { "currCode": "AUD/TL", "exchBuyRate": 17.944, "exchSellRate": 18.581, "changeRatio": -0.53, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "aus/tr", "currDesc": "Avustralya Doları" }, { "currCode": "TL/AUD", "exchBuyRate": 0.0538184166621818, "exchSellRate": 0.05572893446277308, "changeRatio": 0.56, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/aus", "currDesc": "Türk Lirası" }, { "currCode": "CAD/TL", "exchBuyRate": 20.372, "exchSellRate": 21.096, "changeRatio": -0.84, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "ca/tr", "currDesc": "Kanada Doları" }, { "currCode": "TL/CAD", "exchBuyRate": 0.04740235115661737, "exchSellRate": 0.0490869821323385, "changeRatio": 0.88, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/ca", "currDesc": "Türk Lirası" }, { "currCode": "CNY/TL", "exchBuyRate": 3.8576, "exchSellRate": 3.9946, "changeRatio": -0.67, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "cn/tr", "currDesc": "Çin Yuanı" }, { "currCode": "TL/CNY", "exchBuyRate": 0.25033795624092525, "exchSellRate": 0.2592285358772294, "changeRatio": 0.71, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/cn", "currDesc": "Türk Lirası" }, { "currCode": "DKK/TL", "exchBuyRate": 4.0282, "exchSellRate": 4.1712, "changeRatio": -0.88, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "dk/tr", "currDesc": "Danimarka Kronu" }, { "currCode": "TL/DKK", "exchBuyRate": 0.2397391637897967, "exchSellRate": 0.24824983863760489, "changeRatio": 0.92, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/dk", "currDesc": "Türk Lirası" }, { "currCode": "JPY/TL", "exchBuyRate": 18.556, "exchSellRate": 19.215, "changeRatio": -0.89, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "jp/tr", "currDesc": "Japon Yeni (100)" }, { "currCode": "TL/JPY", "exchBuyRate": 0.052042674993494666, "exchSellRate": 0.05389092476826902, "changeRatio": 0.93, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/jp", "currDesc": "Türk Lirası" }, { "currCode": "NOK/TL", "exchBuyRate": 2.5297, "exchSellRate": 2.6195, "changeRatio": -0.76, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "no/tr", "currDesc": "Norveç Kronu" }, { "currCode": "TL/NOK", "exchBuyRate": 0.38175224279442643, "exchSellRate": 0.39530379096335533, "changeRatio": 0.79, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/no", "currDesc": "Türk Lirası" }, { "currCode": "SAR/TL", "exchBuyRate": 7.5093, "exchSellRate": 7.7759, "changeRatio": -0.74, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "sa/tr", "currDesc": "Suudi Arabistan Riyali" }, { "currCode": "TL/SAR", "exchBuyRate": 0.12860247688370477, "exchSellRate": 0.13316820475943164, "changeRatio": 0.77, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/sa", "currDesc": "Türk Lirası" }, { "currCode": "SEK/TL", "exchBuyRate": 2.5895, "exchSellRate": 2.6814, "changeRatio": -0.43, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "se/tr", "currDesc": "İsveç Kronu" }, { "currCode": "TL/SEK", "exchBuyRate": 0.3729395092116059, "exchSellRate": 0.3861749372465727, "changeRatio": 0.46, "currDate": "2023-11-13", "currTime": "16:28:34", "currFlagCode": "tr/se", "currDesc": "Türk Lirası" }, { "currCode": "EUR/USD", "exchBuyRate": 1.06703, "exchSellRate": 1.06917, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "eu/us", "currDesc": "Avrupa Para Birimi" }, { "currCode": "USD/EUR", "exchBuyRate": 0.9353049561809629, "exchSellRate": 0.9371807727992654, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/eu", "currDesc": "Amerikan Doları" }, { "currCode": "GBP/USD", "exchBuyRate": 1.22053, "exchSellRate": 1.22297, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "uk/us", "currDesc": "İngiliz Sterlini" }, { "currCode": "USD/GBP", "exchBuyRate": 0.8176815457451941, "exchSellRate": 0.8193161987005646, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/uk", "currDesc": "Amerikan Doları" }, { "currCode": "USD/JPY", "exchBuyRate": 151.40345, "exchSellRate": 151.70656, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/jp", "currDesc": "Amerikan Doları" }, { "currCode": "JPY/USD", "exchBuyRate": 0.006591672766161199, "exchSellRate": 0.006604869307799789, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "jp/us", "currDesc": "Japon Yeni (100)" }, { "currCode": "ALT/USD", "exchBuyRate": 61.94746, "exchSellRate": 62.63265, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "au/us", "currDesc": "Altın (Gram)" }, { "currCode": "USD/ALT", "exchBuyRate": 0.015966113520663745, "exchSellRate": 0.016142711904572036, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/au", "currDesc": "Amerikan Doları" }, { "currCode": "EUR/GBP", "exchBuyRate": 0.87249, "exchSellRate": 0.87599, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "eu/uk", "currDesc": "Avrupa Para Birimi" }, { "currCode": "GBP/EUR", "exchBuyRate": 1.1415655429856504, "exchSellRate": 1.1461449414893008, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "uk/eu", "currDesc": "İngiliz Sterlini" }, { "currCode": "USD/CHF", "exchBuyRate": 0.90145, "exchSellRate": 0.90325, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/ch", "currDesc": "Amerikan Doları" }, { "currCode": "CHF/USD", "exchBuyRate": 1.1071132023249377, "exchSellRate": 1.1093238671030008, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "ch/us", "currDesc": "İsviçre Frangı" }, { "currCode": "EUR/CHF", "exchBuyRate": 0.96187, "exchSellRate": 0.96573, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "eu/ch", "currDesc": "Avrupa Para Birimi" }, { "currCode": "CHF/EUR", "exchBuyRate": 1.0354861089538485, "exchSellRate": 1.0396415315999044, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "ch/eu", "currDesc": "İsviçre Frangı" }, { "currCode": "USD/CAD", "exchBuyRate": 1.37972, "exchSellRate": 1.38248, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/ca", "currDesc": "Amerikan Doları" }, { "currCode": "CAD/USD", "exchBuyRate": 0.7233377698049882, "exchSellRate": 0.724784738932537, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "ca/us", "currDesc": "Kanada Doları" }, { "currCode": "USD/DKK", "exchBuyRate": 6.97542, "exchSellRate": 6.98938, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/dk", "currDesc": "Amerikan Doları" }, { "currCode": "DKK/USD", "exchBuyRate": 0.14307420686813424, "exchSellRate": 0.14336054316442595, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "dk/us", "currDesc": "Danimarka Kronu" }, { "currCode": "USD/NOK", "exchBuyRate": 11.12112, "exchSellRate": 11.14338, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/no", "currDesc": "Amerikan Doları" }, { "currCode": "NOK/USD", "exchBuyRate": 0.08973937889581078, "exchSellRate": 0.0899190009639317, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "no/us", "currDesc": "Norveç Kronu" }, { "currCode": "USD/SEK", "exchBuyRate": 10.90009, "exchSellRate": 10.92191, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/se", "currDesc": "Amerikan Doları" }, { "currCode": "SEK/USD", "exchBuyRate": 0.09155907712112625, "exchSellRate": 0.09174236176031574, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "se/us", "currDesc": "İsveç Kronu" }, { "currCode": "EUR/JPY", "exchBuyRate": 161.55231, "exchSellRate": 162.19981, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "eu/jp", "currDesc": "Avrupa Para Birimi" }, { "currCode": "JPY/EUR", "exchBuyRate": 0.006165235335355818, "exchSellRate": 0.006189945535288229, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "jp/eu", "currDesc": "Japon Yeni (100)" }, { "currCode": "AUD/USD", "exchBuyRate": 0.63506, "exchSellRate": 0.63634, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "aus/us", "currDesc": "Avustralya Doları" }, { "currCode": "USD/AUD", "exchBuyRate": 1.5714869409435208, "exchSellRate": 1.574654363367241, "changeRatio": 0, "currDate": "2023-11-10", "currTime": "20:53:57", "currFlagCode": "us/aus", "currDesc": "Amerikan Doları" } ]
-
ontedi bunu yazdı
bu varda bende sağlam çalışmıyor bazen hata veriyor
-
Hocam şu api servisi işini görür herhalde.
https://freecurrencyapi.com/
Örnek response;
-
Şimdi ben bir iki siteden çekiyorum ama garanti bankası daha yüksek kur farkı verdiği için ondan çekmek istiyorum onun için bir kod falan varsa
-
juniourfalcon bunu yazdı
Şimdi ben bir iki siteden çekiyorum ama garanti bankası daha yüksek kur farkı verdiği için ondan çekmek istiyorum onun için bir kod falan varsa
using WebClient client = new WebClient(); client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"); client.Headers.Add("accept", "application/json"); client.Headers.Add("channel", "application/json"); client.Headers.Add("client-type", "ArkClient"); client.Headers.Add("content-type", "application/json"); client.Headers.Add("dialect", "TR"); client.Headers.Add("guid", "17ef4075c7384d4dbc174a3120a54c57"); client.Headers.Add("ip", "127.0.0.1"); client.Headers.Add("state", ""); client.Headers.Add("tenant-app-id", ""); client.Headers.Add("tenant-company-id", "GAR"); client.Headers.Add("tenant-geolocation", "TUR"); client.Headers.Add("x-client-trace-id", "17ef4075c7384d4dbc174a3120a54c57"); client.Headers.Add("referrer", "https://webforms.garantibbva.com.tr/"); client.Headers.Add("referrerPolicy", "strict-origin-when-cross-origin"); string result = client.DownloadString("https://customers.garantibbva.com.tr/internet/digitalpublic/currency-convertor-public/v1/currency-convertor/currency-list-detail"); Console.WriteLine(result);
şunu bi denesene hocam, sonuç dönerse json paketi ile parse edersin.