Stáhnutí informace z webu   otázka

VB.NET

Dobrý večer, podle jednoho článku http://vbnet.cz/clanek--72-pracujeme_s_p... jsem zkoušel do své aplikace přidat funkci zjišťování aktuální verze.

 Try
            Dim verze As Double = 0

            'vystavit požadavek na dnešní den

            Dim url As String = String.Format("http://aktualnikurz.euweb.cz/aktualniverze.html", Now)
            Dim rq As Net.HttpWebRequest = Net.HttpWebRequest.Create(url)

            'odeslat jej na server a získat odpověď
            Dim rs As Net.HttpWebResponse = rq.GetResponse()

            'vytvořit StreamReader pro pohodlnou práci

            Dim sr As New IO.StreamReader(rs.GetResponseStream())

            'projít řádky

            While Not sr.EndOfStream

                Dim s As String = sr.ReadLine()

                'pokud jsme na řádku s dolarem, vytáhnout z něj kurz

                If s.StartsWith("AktualniVerze|") Then

                    verze = CDbl(s.Substring(s.LastIndexOf("|") + 1))

                End If

            End While

            'zavřít StreamReader

            sr.Close()

            'zavřít spojení

            rs.Close()
            'vypsat aktuální kurz


            MsgBox(String.Format("Aktuální verze: {0}", verze))
        Catch
            MsgBox("Zkontrolujte připojení k internetu")
        End Try

Webovou stárnku jsem si proto sám vytvořil a mám tam jen řádek AktualniVerze|1.2.0.0, ale když to je napsáno takto, program aktuální kurz nezobrazí a zobrazí chybu. Zkoušel jsem měnit i typ proměnné, ale píše to vždy chybu.

Když na stránku napíšu AktualniVerze|1,2 tak se kurz normálně vypíše.

Nevěděl by někdo jaký je problém, a jak ho mám řešit?

Děkuji za Odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

jak chcete 1.2.0.0 převést na double?

verze = CDbl(s.Substring(s.LastIndexOf("|") + 1))
'zaměňte za
verze = CStr(s.Substring(s.LastIndexOf("|") + 1))

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Presne. Nech mi povie, koľko je 1.2.0.0 + 8.7.6.5 a potom sa to môže snažiť previesť na double.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mnohem lepší řešení (které i sám používám) je na web umístit standardizovaný PAD soubor (XML formát), ve kterém je i informace o verzi a ta se potom načte pomocí XPath dotazu.SelectSingleNode("/XML_DIZ_INFO/Program_Info/Program_Version").InnerText

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vyparsovávání čehokoliv z HTML se vždy snažtge vyhnout - je to ta krajní a poslední možnost.

Buď si na server dejte nějaký speciální textový soubor (nebo XML či něco jiného), odkud si hodnotu stáhnete a načtete mnohem snadněji, nebo si můžete napsat jednoduchou webovou službu, pokud váš webhosting podporuje ASP.NET.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Až na to, že uvedená stránka obsahuje iba čistý text, aj keď má príponu html.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ale v obecné nemáte ty informace nachystané ve formátu, který potřebujete, musíte je v tom hledat a pokud někdo stránku neopatrně upraví, program se rozbije.

Pokud je to jen textový soubor, tak nemá mít příponu HTML, uvnitř není validní stránka. Dejte tomu příponu TXT, XML (pokud to je v XML) nebo nějakou vlastní.

Používejme věci na to, k čemu jsou určené. HTML je určené pro prezentaci dat pro člověka, ne pro počítač. U tohoto jednoduchého případu je to možná jedno, ale nebraňte se možnosti dělat to správně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

AktualniVerze|1.2.0.0, ale když to je napsáno takto, program aktuální kurzKdyž na stránku napíšu AktualniVerze|1,2 tak se kurz normálně vypíše.

Je to teda verzia alebo kurz? Myslím, že sám neviete čo hovoríte.

Riešením je načítať to ako správny datový typ(System.Version).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback