WebService   zodpovězená otázka

VB.NET

Ahoj všem,

mám dotaz, řeším takový problém, načítání informací o firmách z ARESU což je web kde jsou informace o firmách zveřejněny.

Řeším to pomocí webrequestu a vraci mi to xml, v tom problem nemám, ale jelikož zákazník používá proxy server pro přístup na podobné stránky vně firmy, musím pořešit nějak autentifikaci pro získání výše uvedených informací.

Našel jsem malý příkládek na přístup na proxy, ale nějak mi to nechodí

        If myProxyEnable.Checked = "True" Then
            Dim nc As New NetworkCredential(myLogin.Text, myPassword.Text, myDomain.Text)
            Dim proxy As New WebProxy(myProxyName.Text + ":" + myProxyPort.Text)
            proxy.Credentials = nc
            WebStream.Proxy = proxy
        End If

        Try
            SourceCodeStream = WebStream.OpenRead(myWebAddress.Text)
            Dim objReader As System.IO.StreamReader = New System.IO.StreamReader(SourceCodeStream)
            WebSource.Text = objReader.ReadToEnd
            WebBrowser1.Navigate(myWebAddress.Text)

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

a ještě mám na všechny znalé jednu prosbu jde řešit uvedený kod tak aby na místo WebSreamu byl Web Request.

Děkuji všem za radu, či odkaz kde je něco obdobného nastíněno

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

Pro získání dat doporučuji třídu WebRequest nebo HttpWebRequest, ta se dá používat takto:

Dim req As HttpWebRequest = HttpWebRequest.Create(vaseurl)
Dim rdr As New StreamReader(req.GetResponse.GetResponseStream)
Dim vysledek As String = rdr.ReadToEnd
rdr.Close()

Na proxy je pamatováno podobně jako u streamu:

req.Proxy = proxy

Co se týče proxy, doporučuji používat tento konstruktor:

Dim proxy As New WebProxy(myProxyName.Text, CInt(myProxyPort.Text))

Pro zpracování Vám doporučuji, abyste používal metodu DataSet.ReadXml(). Ta akceptuje dokonce i samotný stream. Celkový kód potom tedy bude vypadat takto:

Dim req As HttpWebRequest = HttpWebRequest.Create(vaseurl)
Dim ds As New DataSet()

If myProxyEnable.Checked Then
    Dim nc As New NetworkCredential(myLogin.Text, myPassword.Text, myDomain.Text)
    Dim proxy As New WebProxy(myProxyName.Text, CInt(myProxyPort.Text))
    proxy.Credentials = nc
    req.Proxy = proxy
End If

Try : ds.ReadXml(req.GetResponse.GetResponseStream)
Catch ex As Exception : MsgBox(ex.Message)
Finally
    'tady přijde zpracování načteného DataSetu
End Try

Zpracování samotného datasetu si už musíte odkrokovat sám, tady záleží hlavně na struktuře samotného XML... Jenom pokud jsou stahovaná data objemnější, doporučují stahovat asynchroně (pomocí req.BeginGetResponse()) - viz http://www.developerfusion.co.uk/show/46... při normálním synchroním stahování většího obsahu by se totiž do doby stažení celého obsahu mohla aplikace "hryznout".... Hodně štěstí

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