PDA

Vollständige Version anzeigen : Daten via method=POST senden


sarlt
24.05.2001, 09:54
Hallo *,

ich möchte ganz gern Daten via POST Methode an einen URL im Internet senden.

Dafür gibt es wohl mehrere Möglichkeiten.

Ich habe mich vorerst für die MS Internet Controls entschieden (shdocvw.dll).

Mein bisheriger Code sieht so aus:

Public Function PostInternetData
Dim Browser As InternetExplorer
Set Browser = New InternetExplorer

Dim Header As String
Dim PostData As String

Header = "Content-Type: application/x-www-form-urlencoded"
PostData = "feld1=wert1"
Browser.Navigate "http://localhost/", 2 & 4 & 8, , PostData, Header
Browser.Visible = True
End Sub

So wie es aussieht macht er noch ein GET, obwohl ich ja Post Daten angegeben habe. Aus der MSDN Hilfe werd ich auch nicht schlauer. Ich glaube ich übergebe die Post Daten oder den Header oder beides falsch.

Kann mir da vielleicht helfen?
Hat jemand vielleicht ein funktionierendes Beispiel?

Vielen Dank vorab schon mal.

Sascha

Stefan Kulpa
25.05.2001, 09:13
<font face="Verdana" size="2">Hallo Sascha,

also die nachfolgende "Lösung" hat eher akademischen Charakter,
da ich es nicht testen konnte und auch keine große Erfahrung mit
diesem Thema habe.

Dies fand ich in der MSDN:</font>

<PRE><FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Function</FONT> PostInternetData()

<FONT COLOR=#000080>Dim</FONT> PostData() <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Byte</FONT>
<FONT COLOR=#000080>Dim</FONT> URL <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> TargetFrame <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> Headers <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> Flags <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

URL = "http://YourServer" <FONT COLOR=#008000>' A URL that will accept a POST</FONT>
Flags = 0
TargetFrame = ""
PostData = "Information sent to host"

<FONT COLOR=#008000>'VB creates a Unicode string by default so we need to</FONT>
<FONT COLOR=#008000>'convert it back to Single byte character set.</FONT>
PostData = StrConv(PostData, vbFromUnicode)

Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Function</FONT>

</FONT></PRE>

<font face="Verdana" size="2">Es gibt zwei wesentliche Unterschiede zu Deinem Beispiel:

1. Das MSDN-Beispiel benutzt ein Byte-Array für PostData!
2. Das MSDN-Beispiel setzt die Flags auf 0 und nicht wie Du auf 2 & 4 & 8!

Dir ist sicherlich bekannt dass '2 & 4 & 8' = 248 ergibt !?

Gruß</font>

sarlt
26.05.2001, 13:05
Super Danke Stefan,

das hat geholfen. Hier nun die endgültige Fassung, für die die es interessiert. Ohne Dich währe ich wohl nie drauf gekommen.

By the Way: Ich habe auch die MSDN aber dieses Beispiel habe ich nie gefunden.

SO GEHTS :-)

Public Function PostInternetData()
Dim PostData() As Byte
Dim URL As String
Dim TargetFrame As String
Dim Headers As String
Dim Flags As Long
Dim WebBrowser1 As InternetExplorer
Set WebBrowser1 = New InternetExplorer

URL = "http://www.meinserver.de/scripts/testscript.php" ' A URL that will accept a POST
Flags = 0
TargetFrame = ""
PostData = "feld1=wert1"

'VB creates a Unicode string by default so we need to
'convert it back to Single byte character set.
PostData = StrConv(PostData, vbFromUnicode)

Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers
WebBrowser1.Visible = True 'Optional, wer das Ergebnis gern sehen will!
End Function

Phillip-Berlin
30.05.2001, 09:05
das find ich gut das jetzt öfter auch mal die endgültige lösung gepostet wird ... dann haben die anderen (bemühten) forumsteilnehmer auch was davon!

md
02.03.2010, 14:35
Diesen Beitrag habe ich tagelang gesucht, vielen Dank!

Euer MD