XMLHTTP
Denne side viser forskellige eksempler på hvordan man kan bruge Microsofts MSXML/XMLHTTP komponent til at sende og hente data via internettet.
Disse eksempler kan med fordel bruges fremfor andre komponenter som for eksempel AspHTTP, AspTear, w3 Sockets, etc. Husk at du altid skal versionere MSXML komponenten, så din kode ikke vil blive berørt af eventuelle opgraderinger på serveren når en ny komponent udkommer, dette gøres ved at skrive for eksempel .5.1 bagerst, som beskrevet i eksemplerne.
Hent HTML kode.
<%
Dim objHttp
' Lav objektet der henter data
Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
' Åben forbindelsen til serveren
objHttp.Open "GET", "http://azero.dk/", False
' Send dataene
objHttp.Send
' Vis dee hentede data som sourcekode
Response.Write "<h1>HTML teksten</h1>"
Response.Write "<xmp>" & objHttp.ResponseText & "</xmp>"
' Vis de hentede data som HTML
Response.Write "<h1>HTML format</h1>"
Response.Write "<p>" & objHttp.ResponseText & "</p>"
Set objHttp = Nothing
%>
Send HTML kode.
<%
Dim objHttp
Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
' Her lader vi som om vi er en form der sender (POSTer) data
objHttp.Open "POST", "http://www.imdb.com/Find/", False
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHttp.Send "select=All&for=Pink Floyd The Wall"
Response.Write objHttp.ResponseText
Set objHttp = Nothing
%>
Hent binære data, det kan være billeder, zip filer, exe filer etc.
<%
Dim objHttp
Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
objHttp.Open "GET", "http://azero.dk/images/header/logo.jpg", False
objHttp.Send
' Giv filen et filnavn
Response.AddHeader "Content-Disposition", "filename=filnavn.jpg"
' Fortæl browseren hvad for en type filen er
Response.ContentType = "image/jpg"
' Udskriv billedets indhold til browseren
Response.BinaryWrite objHttp.ResponseBody
Set objHttp = Nothing
%>
Test nedenstående kode der viser et billede der er hentet via ovenstående eksempel.
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<title>Vis et billede via ASP</title>
<body>
<img src="get-binary.asp">
</body>
</html>
Hent HTML kode og lav et login.
<%
Dim objHttp
Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
objHttp.Open "GET", "http://www.azero.dk/", False, "Peter", "Kodeord"
objHttp.Send
Response.Write objHttp.ResponseText
Set objHttp = Nothing
%>
Hent og vis data fra en XML-fil
<%
Dim _
objXml, _
objCatalog, objAuthor, objTitle, _
strOutput
' Lav objektet der henter data
Set objXml = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
' Sæt eventuelt codepage (SXH_OPTION_URL_CODEPAGE)
'objXml.setOption 0, 0
' Åben UTF-8 kodet XML-fil
objXml.Open "GET", "http://azero.dk/support/programmering/asp/artikler/sockets/xmlhttp/xml-books.xml", False
' Lever dataene
objXml.Send
Set objCatalog = objXml.responseXML
Set objAuthor = objCatalog.selectSingleNode("//book[@id='bk101']/author")
Set objTitle = objCatalog.selectSingleNode("//book[@id='bk101']/title")
strOutput = _
"<h1>Bog søgeresultat</h1>" & vbCrLf & _
"<p>Forfatter: " & objAuthor.Text & "<br/>" & vbCrLf & _
"Titel: " & objTitle.Text & "</p>" & vbCrLf
Set objXml = Nothing
Set objCatalog = Nothing
Set objAuthor = Nothing
Set objTitle = Nothing
Response.Write strOutput
%>
Hvis du har brug for at validere og fejlsøge din XML-fil, kan du bruge Microsofts Validate XML VBScript eksempel.
Der er mange andre måder at bruge Microsofts forskellige HTTP/XML komponenter på, ovenstående er anbefalet når man bruger dem på en server. Alternativt kan du bruge nedenstående, eller se Azeros komponentside.
' Brug serverkomponenten til HTTP fra MSXML6
Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
' Brug serverkomponenten til XML fra MSXML6
Set objXml = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
' Brug en klientkomponent til XML fra MSXML6
Set objXml = Server.CreateObject("Microsoft.XMLHTTP.6.0")
' Følgende kald er udgået og vil bruge den ældste komponent, sædvanligvis MSXML 3.0
Set objXml = Server.CreateObject("MSXML2.ServerXMLHTTP")
Find mere support hos Microsoft, eventuelt under MSDN ServerXMLHTTP support.
Se eventuelt også MSXML 6.0 SDK dokumentationen.
Bemærk også at du eventuelt selv skal sætte codepage (charset/karakter set), så specialtegn fremstår rigtigt, som beskrevet på setOption.
De løbende ændringer i MSXML, kan læses under What's new.
En liste over alle MSXML metoder kan ses på metodeoversigten, bemærk at de ikke alle kan bruges til alle de forskellige måder man kan bruge MSXML på.
