Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

asp .net - tcmbden xml kur verisini okurken hata...


Öne çıkan mesajlar

Mesaj tarihi:

XmlTextReader okuyucu = new XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml");

XmlDocument dokuman = new XmlDocument();
dokuman.Load(okuyucu);



aspde yeni oldugum için netten araştırarak buldum bişeyler. adam guzelde anlatmış, kodu da yukarıdaki nane. lakin altı çizili fonksıyonda hata verıyor. connection karşı bilgisayar tarafından zorla kapatılmış. kolay kolay çekmesi gerekmiyor mu bunu? tcmb mi artistik yapıyor yoksa?

zilyonuncuedit: bug buldum heralde. code tagı içinde "http://www.tcmb.gov.tr/kurlar/today.xml" <-- aslında böyle yazıyor olmasına rağmen noktalı virgul koyuyor new XMLTextReaderın içindeki hedeye.
zilyonbirinci edit:o editten sora bile ikinci denden işareti noktalı virgul gözüktü O_o
Mesaj tarihi:
sniffing nedir?

gogıllayınca anladım biraz neymiş ne deilmiş ama nası yapıcaz?
onuda azcık gogıllayım.
yalnız yukarıda soruna "sniffing" yapmadan çare bulabilecek birileri varsa çok şık olur?
Mesaj tarihi:
request esnasında header'da bazı parametreler göndeririz.. bunlardan birisi de user-agent'tır. hani web siteleri falan da ona göre "bu adam firefox kullanıyor" gibi istatistikler tutabiliyorlar..

şimdi tcmb, birilerinin sunucusuna asılmasını istemiyorsa, request'ten user-agent'ı falan kontrol ediyor muhtemelen.. eğer herhangi bir browser bilgisi yoksa da, response göndermiyor.. yani bu benim tahminim ama browser'la sorunsuz çağırabildiğimize göre mantıksız görünmüyor bu tahmin.

yanlış hatırlamıyorsam; xmltextreader aslında httpwebrequest objesini kullanıyordu veri çekmek için.. bu obje de header'da anlamlı bir user-agent göndermiyor tabii tcmb için.. ama sen o sayfayı çağırırken header'da herhangi bir browser'a ait user-agent parametresi kullanırsan, tcmb'yi kandırabilirsin gibi geldi..

edit: bu arada ben hiç bir şeyi test etmedim.. hatayı falan da görmedim. tamamen senin dediklerin üzerinden yorumluyorum.
Mesaj tarihi:


System.Net.WebException was unhandled by user code
Message=The underlying connection was closed: An unexpected error occurred on a receive.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
at System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
at System.Threading.CompressedStack.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state)
at System.Xml.XmlTextReaderImpl.OpenUrl()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at ekonomi.Piyasa() in c:UsersDeniz TrakaDocumentsVisual Studio 2010WebSitesWebProgNewsekonomi.aspx.cs:line 25
at ekonomi.Page_Load(Object sender, EventArgs e) in c:UsersDeniz TrakaDocumentsVisual Studio 2010WebSitesWebProgNewsekonomi.aspx.cs:line 15
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.IO.IOException
Message=Unable to read data from the transport connection: Varolan bir bağlantı uzaktaki bir ana bilgisayar tarafından zorla kapatıldı.
.....


daha gidiyor böyle. anlattığın şey cuk oturuyor sanki ama nası bi browser bilgisi gönderıcegımı bılmıyorum. nette bi servera atıp ordamı denesem ki?
Mesaj tarihi:

Uri ur = new Uri("http://www.tcmb.gov.tr/" );
HttpWebRequest wRequest =
(HttpWebRequest)HttpWebRequest.Create(ur);
wRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12";
wRequest.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
wRequest.Headers.Add("Accept-Language", "en,tr;q=0.5" );

WebResponse wResponse = wRequest.GetResponse();

Stream str = wResponse.GetResponseStream();
StreamReader sReader = new StreamReader(str);

string htmlText = sReader.ReadToEnd();


Şöyle bir dene bakalım, page source'unu okutmuş oluyorsun, user-agent ve headerları vererek. Bir ara kullanmıştım benzer bir iş için ordaki parametrelerle oynayabilirsin.

Gelen htmlText ile de istediğin kurları falan parse edip alırsın.

Ama bu tarz işler için webService falan daha mantıklı gibi.

edit : Tabi senin ss'li posttaki linki falan okumayınca böyle biraz alakasız birşey olmuş, neyse belki işine yarar :)
Mesaj tarihi:
teşekkür ederim yardımlarınız için. Aynı kod dün çalışmıyordu. Bugun birdaha bakıyım dedim, hiç değişiklik yapmadım ve rahat rahat veriyi çekebiliyor. İlginç işler...
tekrar teşekkür ettim.
×
×
  • Yeni Oluştur...