XMLHTTP
Skrevet af d. 12/12-2017 14:29

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

(0 stemmer)
Denne artikel var til hjælp
Denne artikel var ikke til hjælp

Kommentarer (0)
Opret kommentar
 
 
Navn:
Email:
Kommentarer:
CAPTCHA Verificering 
 
Indtast teksten du ser på billedet i feltet herunder (CAPTCHA). Dette er påkrævet for at undgå automatiske registreringer og form afsendelser.

Referencer |  Om Azero |  Betingelser |  Job |  Presse |  Kontakt Azero

Azero A/S - CVR 28 10 17 59 - Skjørringvej 8 - 8464 Galten - Telefon 38 19 50 17
Danske Bank - Reg 4180 - Konto 0010092027 - SWIFT DABADKKK - IBAN DK7230000010092027

Copyright © 2000-2020. Azero A/S respekterer alle varemærker.
Priser er angivet eksklusive moms i DKK, der tages forbehold for trykfejl. Alt salg sker i henhold til vores betingelser.
1. Domaincheck - 2. Search - 3. NScheck - 4. NSlookup - 5. Lookup - 6. TraceRoute - 7. Query - 8. CheckWeb - (9. Flere)