Kategorien:
Suchbegriffe:
Suchfelder:
Suche starten
Neue Beiträge / Top 7
Alle Artikel / Liste
Bücher zu ASP/ASP.Net
Startseite / Hilfe
Fragen zu ASP/ASP.NET
Datenschutzrichtlinen
Impressum / Kontakt
Das ASP.Net Codebook. Die unentbehrliche Referenz für alle ASP.Net-Entwickler [Autoren: Stefan Falz, Karsten Samaschke]
Active Server Pages-FAQ
Active Server Pages - FAQ (v. 1.50) © 2000 - 2020 by Stefan Falz Webconsulting

GetFile! Dynamischer Dateiupload im Browser

Dateizugriff Zurück Druckversion Stefan Falz 09.08.2001
Frage: Wie kann ich Daten per POST an einen anderen Server senden (serverseitig)?
Sie möchten Daten an ein Skript auf einem anderen Server senden. Dieses Skript erwartet die
Daten aber nicht als Parameter in der URL. Damit scheidet ein Redirect oder ein manueller Aufruf
aus. Es gibt 2 Möglichkeiten, dies trotzdem durchzuführen.

Wenn die Rückgabe weiterverarbeitet werden soll, der Aufruf also unbedingt serverseitig durchgeführt
werden muss, muss man sich einer Komponente bedienen. Diese kann auch XMLHTTP sein. Es gelten
die selben Hinweise wie im Artikel Wie kann ich Dateien von anderen (Internet-)Servern laden?

Da es Probleme mit Umlauten bei der Ausgabe des ermittelten Contents bei der Verwendung von
objHTTP.ResponseText gibt, haben wir die Skripte dahingehend geändert, dass wir den Inhalt der
Seiten über objHTTP.ResponseBody auslesen und mit Response.BinaryWrite ausgeben


Nachfolgend ein Beispiel, dass einen solchen Aufruf erzeugt und die zurückgegebenen Daten auf
dem Bildschirm ausgibt.

--------------------------------------------------------------------------------
[postdata.asp]
<%
Private Function PostData(URL, Data)

' --- Instantiieren des Objekts MSXML2.ServerXMLHTTP
Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")

    ' --- Einstellen der Timeouts in Millisekunden
    ' --- Es gibt 4 Parameter, die in der nachstehenden Reihenfolge angegeben werden müssen
    ' -----------------------------------------------------
    ' --- resolveTimeout - Auflösen des Hostnamens
    ' --- connectTimeout - Verbinden mit dem Host
    ' --- sendTimeout - Senden eines Datenpaketes an den Server
    ' --- receiveTimeout - Empfangen eines Datenpaketes vom Server
    ' -----------------------------------------------------
    objHTTP.SetTimeouts 1000, 1000, 1000, 1000

    ' --- Erstellen des Requests mit folgenden Parametern
    ' --- bstrMethod - Request-Methode
    ' --- bstrURL - Adresse der Seite, die ausgelesen werden soll
    ' --- varAsync - Laden der Seite asynchron (Wenn false, wird synchron geladen)
    objHTTP.open "POST", URL, false
    
    ' --- Setzen des Content-Types, da ansonsten die Daten aufgrund
    ' --- falscher Kodierung vom Zielserver nicht ausgelesen werden können
    objHTTP.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"

    ' --- Senden des Requests
    objHTTP.send Data

    ' --- Der gesamte Text der geladenen Seite steht jetzt in ResponseText
    ' --- und wird als Rückgabewert der Funktion GetURL zugewiesen.
    PostData = objHTTP.ResponseBody

' --- Terminieren des Objekts
Set objHTTP = Nothing

End Function
%>
<html>
<head>
    <title>HTTP POST</title>
</head>
<body>
Es werden Daten per POST an http://www.aspfaq.de/ex_scripts/artikel_56.asp gesendet<br>
<br>
<%
' --- Zusammenstellen der Übergabewerte
' --- Die Daten werden genauso wie in einer
' --- URL zusammengestellt
DataField1 = "Parameter1=Wert1"
DataField2 = "Parameter2=Wert2"
DataField3 = "Parameter3=Wert3"

' --- Die einzelnen Felder werden ebenfalls
' --- mit einem "&" getrennt
DataFields = DataField1 & "&" & DataField2 & "&" & DataField3

' --- In DataFields sollte danach folgendes enthalten sein
' --- "Parameter1=Wert1&Parameter2=Wert2&Parameter3=Wert3"

Response.Write "Hier folgt die Ausgabe der vom Zielskript zurückgegebenen Daten<br><br>" & vbCrLf

Response.BinaryWrite PostData("http://www.aspfaq.de/ex_scripts/artikel_56.asp", DataFields)
%>
</body>
</html>
--------------------------------------------------------------------------------

Damit haben Sie jetzt Daten per POST an ein Skript auf einem anderen Server gesendet
und die Rückgabe dieses Skripts ausgelesen. Mit dieser Funktion lassen sich zum Beispiel
Suchmaschinen durch eigene Skripte abfragen. Die Rückgabe dieser Skripte (dass was
normalerweise an den Browser gesendet wird) erhält Ihr Skript, so dass Sie mit diesen
Daten serverseitig weiterarbeiten können.

Achtung: Sie sollten allerdings beachten, dass das "Ausleihen" von Inhalten nicht von allen
Websitebetreibern erwünscht ist und in gewissen Fällen sogar rechtlich problematisch ist. Daher
sollten Sie, bevor Sie fremde Seiten auslesen und den Inhalt auf Ihren Seiten ausgeben oder
weiterverarbeiten, auf jeden Fall den Betreiber der Website fragen, ob ein solches Auslesen
erwünscht ist. Dies gilt auch für alle unsere Websites (ausser das Beispielskript).

Auch hier haben wir Ihnen die verwendeten Dateien als Zipfile zum Download bereitgestellt.

artikel_56.zip [2 KB]

Sehr gut
1 2 3 4 5 6
Ungenügend
Zurück | Bisherige Aufrufe: 20645 | Bisherige Bewertungen: 24 | Durchschnitt: 2,17
Stefan Falz Webconsulting