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...


Dwinz

Öne çıkan mesajlar


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
Link to comment
Sosyal ağlarda paylaş

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.
Link to comment
Sosyal ağlarda paylaş



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?
Link to comment
Sosyal ağlarda paylaş


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 :)
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...