Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Content-Type: application/x-www-form-urlencoded
Autor: Matthias Griesbach (---.customers.d1-online.com)
Datum:   23.06.14 11:33

Ein kleiner Erfolg.
Mit dem Header Content-Type: application/x-www-form-urlencoded
Print HttpAddHeader("Accept: text/html, text/csv, */*\nAccept-Charset: ISO-8859-1,utf-8")
 Print HttpAddHeader("Content-Type: application/x-www-form-urlencoded; Charset: utf-8;")

kommen Dateien beim Webserver an, wenn man als Body
Body$="userfile=datei.name&data="

nimmt, und den Inhalt der Datei als ByteString (%21%86 etc.) anhängt.

Proc ByteString
   Parameters text$
   Declare i&, count&, new$, tmp$
   i&=len(text$)
   WhileLoop 1,i&
     tmp$=hex$(ord(mid$(text$,&loop,1)))
     Case len(tmp$)<2:tmp$="0"+tmp$
     new$=new$+"%"+tmp$
   
   EndWhile
   Return New$
 EndProc


Das klappt mit Textdateien, etc.
Bei binären Dateien wei Bilder hilft dann folgende Proc
Proc ReadBmp
   Parameters file$
   Declare BytesWritten&, Size&, Buff#, Return$, new$,tmp$,i&
   Size&= FileSize(file$)
   Dim  Buff#, Size&
   BlockRead(file$, Buff#, 0, Size&)
   WhileLoop 0,Size&
     tmp$=hex$(ord(CHar$(Buff#,&loop,1)))
     Case len(tmp$)<2:tmp$="0"+tmp$
     new$=new$+"%"+tmp$
   EndWhile  
   Dispose Buff#   
   Return New$
 EndProc


HttpSend kommt dann ohne Bereichsvariable aus und überträgt den Body sammt ByteString ohne murren. Der String muss auch nicht in einen WideString umgewandelt werden.

Proc HttpSend
   Parameters Text$
   Declare Size&, Return$
   Size&=(Len(Text$)+0)'*2
   Return$="Send Request "+format$("0",size&)+" Byte"  
   bResults& = PWinHttpSendRequest( hRequest&,~WINHTTP_NO_ADDITIONAL_HEADERS,0, Addr(Text$), Size&, Size&, 0) '~WINHTTP_NO_REQUEST_DATA addr(widestring#)
   CaseNot  bResults& :Return$="Send: "+str$(~GetLastError())+WinError$(%WinError)
   Return Return$
 EndProc 


Einziger Wermutstropfen ist die Beschränkung der Dateigröße. Ein BMP mit 4kB kommt ganz an, einer CSV-Datei mit 6kB fehlen am Ende einige Zeilen.

Hier noch das PHP-Script für den Server
<?PHP
 ini_set('default_charset', 'UTF-8');
 
 Echo 'Headers ->';
 $headers = apache_request_headers();
 foreach ($headers as $name => $value) {
     echo $name.': '.$value.'\\n';
 }
 
 $file = $_POST["userfile"]; 
 $somecontent = print_r($_POST["data"], TRUE); 
 $fp = fopen($file, 'w') or die('Could not open file!'); 
 fwrite($fp, $somecontent) or die('Could not write to file'); 
 fclose($fp); 
 
 Echo 'userfile='.$_POST["userfile"].'\n';
 Echo 'data='.$_POST["data"].'\n';
 ?>


Die Funktion WinHttpSendRequest aus der WinHttp.dll geht also mit Profan.
Für den Header Content-Type: multipart/form-data muss das auch noch irgendwie gehen.

Richtiger Body aufbau, und die exate Länge, dann sollte das klappen.

Beste Grüße
Matthias Griesbach

XProfan X2, Windows 7

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 WinHttp.dll  Neu
Matthias Griesbach 13.06.14 20:28 
 Re: WinHttp.dll  Neu
Maik Borchardt 13.06.14 23:24 
 Quellcodes  Neu
Matthias Griesbach 14.06.14 17:49 
 Re: Quellcodes  Neu
Maik Borchardt 15.06.14 23:30 
 Re: Quellcodes  Neu
Matthias Griesbach 16.06.14 19:23 
 Re: Quellcodes  Neu
Maik Borchardt 16.06.14 21:12 
 Re: Quellcodes  Neu
Matthias Griesbach 16.06.14 21:37 
 Re: Quellcodes  Neu
Maik Borchardt 16.06.14 22:04 
 Re: Quellcodes  Neu
Matthias Griesbach 16.06.14 22:48 
 Re: Quellcodes  Neu
Maik Borchardt 16.06.14 23:09 
 Re: Quellcodes  Neu
Matthias Griesbach 17.06.14 10:54 
 Re: Quellcodes  Neu
Stephan Sonneborn 21.11.19 15:14 
 Quellcodes - WinHttp Header  Neu
Matthias Griesbach 17.06.14 22:00 
 WinHttp Include  Neu
Matthias Griesbach 17.06.14 22:40 
 Re: WinHttp Include  Neu
Maik Borchardt 17.06.14 23:12 
 Re: WinHttp Include  Neu
Matthias Griesbach 18.06.14 00:18 
 WinHttp.dll gibt Antworten  Neu
Matthias Griesbach 17.06.14 23:39 
 Re: WinHttp.dll gibt Antworten  Neu
Maik Borchardt 17.06.14 23:48 
 Re: WinHttp.dll gibt Antworten  Neu
Matthias Griesbach 18.06.14 00:50 
 Re: WinHttp.dll gibt Antworten  Neu
Florian Heuberger 18.06.14 12:46 
 WinHttp.dll öffentlicher Testserver  Neu
Matthias Griesbach 20.06.14 10:12 
 Re: WinHttp.dll öffentlicher Testserver  Neu
Maik Borchardt 21.06.14 00:30 
 Content-Type: application/x-www-form-urlencoded  Neu
Matthias Griesbach 23.06.14 11:33 
 Re: Content-Type: application/x-www-form-urlencoded  Neu
Maik Borchardt 23.06.14 16:46 
 Re: Content-Type: application/x-www-form-urlencoded  Neu
Matthias Griesbach 23.06.14 18:52 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org