LOK
Mitglied
Hallo @ll,
ich möchte Daten per POST-Request aus VB an ein Server senden...
einfach eine Seite per Winsock aufrufen habe ich schon geschafft:
jetzt möchte ich aber wie gesagt ein Post-Request senden...
die Syntax in PHP lautet dazu
und bei Dateien so:
aber ich schaffe es irgendwie nicht dies in VB umzusetzen ... kann bitte jemand so nett sein, und mir helfen dies irgendwie umzuschreiben?
Danke im Voraus
LOK
ich möchte Daten per POST-Request aus VB an ein Server senden...
einfach eine Seite per Winsock aufrufen habe ich schon geschafft:
Code:
Private Sub Form_Load()
Winsock1.Connect "-SERVER-", 80
End Sub
Private Sub Winsock1_Connect()
Dim databuffer As String
databuffer = "GET /index.htm HTTP/1.1" & vbCrLf & _
"Host: www.hdgdl.net" & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Connection: Close" & vbCrLf & vbCrLf
Winsock1.SendData databuffer
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim buffer As String
Dim dummy As String
Dim Header As String
Dim pos As Long
On Error Resume Next
Winsock1.PeekData dummy, vbString
'Sucht das Ende des Headers
pos = InStr(1, dummy, vbCrLf & vbCrLf)
'Bis zum Ende des Headers werden die Daten als String ausgelesen
Winsock1.GetData Header, vbString, pos + 3
'Der Rest wird binär ausgelesen
'Winsock1.GetData buffer, vbByte
Winsock1.GetData buffer, vbString
t = MsgBox(Header, vbOKOnly, "header")
t = MsgBox(buffer, vbOKOnly, "buffer")
End Sub
jetzt möchte ich aber wie gesagt ein Post-Request senden...
die Syntax in PHP lautet dazu
PHP:
<?php
function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host, 80);
printf("Open!\n");
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
printf("Sent!\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
printf("Done!\n");
fclose($fp);
return $res;
}
$data = "pid=14&poll_vote_number=2";
printf("Go!\n");
$x = PostToHost(
"www.linux.com",
"/polls/index.phtml",
"http://www.linux.com/polls/index.phtml?pid=14",
$data
);
und bei Dateien so:
PHP:
<?php
// Andreas Bohne-Lang / a.bohne@dkfz.de / 22.10.2001 / GPL
// Ergaenzt: 19.9.2003
function PostToHost($host, $port, $path, $referer, $data_to_send)
{
$dc = 0;
$bo="-----------------------------305242850528394";
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp) {
echo "errno: $errno \n";
echo "errstr: $errstr\n";
return $result;
}
fputs($fp, "POST $path HTTP/1.0\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Referer: $referer\n");
fputs($fp, "User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)\n");
fputs($fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\n");
fputs($fp, "Accept-Charset: iso-8859-1,*,utf-8\n");
fputs($fp, "Content-type: multipart/form-data; boundary=$bo\n");
foreach($data_to_send as $key=>$val) {
$ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"\n\n%s\n", $bo, $key, $val);
$dc += strlen($ds);
}
$dc += strlen($bo)+3;
fputs($fp, "Content-length: $dc \n");
fputs($fp, "\n");
foreach($data_to_send as $key=>$val) {
$ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"\n\n%s\n", $bo, $key, $val);
fputs($fp, $ds );
}
$ds = "--".$bo."--\n";
fputs($fp, $ds);
while(!feof($fp)) {
$res .= fread($fp, 1);
}
fclose($fp);
return $res;
}
// Fuer eine ASCII-Datei kann man es so machen
// bei bin-Daten ueber fread gehen
$fa = @file("http://www.dkfz.de/spec/fix/file.pdb");
// Konkretes Beispiel - Eine Chemie-Datei
$xf="Content-Type: chemical/x-pdb\n\n". implode("", $fa);
$data["disk"] = "on";
$data["file\"; filename=\"irgendwas.pdb"] = $xf;
$data["smiles"] = "";
$data["hadd"] = "add";
$data["aroresolver"] = "on";
$data["format"] = "gif";
$data["interlace"] = "1";
$data["width"] = "600";
$data["height"] = "400";
$data["atomcolor"] = "Black";
$data["asymbol"] = "xsymbol";
$data["hcolor"] = "";
$data["csymbol"] = "special";
$data["hsymbol"] = "special";
$data["bondcolor"] = "Black";
$data["bgcolor"] = "White";
$data["border"] = "12";
$data["bonds"] = "8";
$data["wedges"] = "1";
$data["dashes"] = "1";
$data["crop"] = "2";
$data["align"] = "none";
$data["coord"] = "0";
$data["imagemap"] = "none";
$data["headercolor"] = "Black";
$data["header"] = "";
$data["footercolor"] = "Black";
$data["footer"] = "";
$data["commenttype"] = "none";
$data["comment"] = "";
$data["structure"] = "none";
$x = PostToHost (
"www2.chemie.uni-erlangen.de",
80,
"/cgi-bin/services/gifcreator.tcl",
"http://www2.chemie.uni-erlangen.de/services/gifcreator/index.html",
$data
);
// Diesen Teil kann man bestimmt noch optimieren ;-)
$fp = fopen("struktur.gif", "wb");
$tok = 0;
for ($i=20; $i<strlen($x); $i++){
if ((substr($x,$i,1)=="\n") || (substr($x,$i,1)=="\r")) {
$tok++;
if($tok>=3) break;
} else {
$tok=0;
}
}
$i++; $i++;
printf(" %d %d %d \n", $i, strlen($x), strlen($x)-$i);
fwrite($fp, substr($x,$i,strlen($x)-$i));
fclose($fp);
$fp = fopen("struktur.xxx", "wb");
fwrite($fp, $x, strlen($x));
fclose($fp);
?>
aber ich schaffe es irgendwie nicht dies in VB umzusetzen ... kann bitte jemand so nett sein, und mir helfen dies irgendwie umzuschreiben?
Danke im Voraus
LOK