Post per sockets



  • Hallo, nachdem ich mit sockets eine Seite eingelesen habe, möchste ich nun eine Post anfrage senden, also so, als wenn ich dass Formular auf der Seite ausgefüllt und auf Absenden geklickt hätte.

    Die Postanfrage hab ich nach einem Beispiel gemacht dass ich im Netz gefunden hab, weiss daher auch nicht obs richtig ist:

    Erstellen von Post:
    
    	POST http://www.theman.org/http/form.php HTTP/1.0
    	Date: Tue, 15 Nov 1994 08:12:31 GMT
    	User-Agent: Mozilla/4.03 [de]
    	Content-Type: application/x-www-form-urlencoded
    	Content-Lenght: 48
    	name=foo&age=23&......      //48 Zeichen
    

    Mein Code:

    //Erst line6 , da ich die Länge für line 5 brauche
    	CString line6= "time=" + ts_str + "&v=" + v_str  + "&login=" + user_str + "&pass=" + pass_str;
    
            // Zeilenumbruch
    	char cr=13;                
    	CString CR = cr;
    
            // Länge zu strings wandeln
    	int len = line6.GetLength();       
    
    	char z1=char(len%10+'0');
    	char z2=char(len/10+'0');
    	CString z1_str= z1;
    	CString z2_str= z2;
    
    	CString line1= "POST http://" + htmlstr + "/login.php HTTP/1.0";
    	CString line2= "Date: Tue, 19 Jul 2005 23.03.31 GMT";
    	CString line3= "User-Agent: Mozilla/4.03 [de]";
    	CString line4= "Content-Type: application/x-www-form-urlencoded";
    	CString line5= "Content-Lenght: " + z2_str + z1_str ;
    
    	CString POST= line1 + CR + line2 + CR + line3 + CR +line4 + CR + line5 + CR + line6;
    

    Nun habe ich den Post gesendet als wenn es ein GET wäre. Nur eben also Kommando diesen 'POST' . Funktioniert allerdings nicht, nun frage ich mich warum. Wenn ich den fertigen 'POST' ansehe, sieht er aus, wie das Beispiel aus dem I-Net.

    Oder gibt es eine andere (vieleicht sogar leichtere) Möglichkeit ein Post zu machen. Bin für jegliche Hilfe oder Links zu Tutorials dankbar.



  • Zwischen dem Header ( bis Content-Length: .. ) und den daten muss eine freie zeile, also zwei CRs dazwischen... udn für CR solltes tdu nicht den wert 13 nehmen, sondern '\n', also 10, oder gar "\n\r" (oder andersrum, verdammt muss ich passen), also 10 13 (13 10)... eigentliches letztes...

    POST http://www.theman.org/http/form.php HTTP/1.0\n
    Date: Tue, 15 Nov 1994 08:12:31 GMT\n
    User-Agent: Mozilla/4.03 [de]\n
    Content-Type: application/x-www-form-urlencoded\n
    Content-Lenght: 48\n
    \n
    name=foo&age=23&......      //48 Zeichen
    


  • um genau zu sein muss nach dem header eine zeile mit cr\lf

    ein überbleipsel aus alten dos zeiten das eigentlich was soviel bedeutet wie zurück zu zeilenanfang (carriage returne ) und eine zeile weiter (line feed)

    hier mal ne zeile aus meinen webserver die sucht eben nach genau dieser zeile

    unsigned int pos_cr_lf = line.find_first_of("\x0a\x0d");

    dies muss also bei dir in einer eigenen zeile stehen \x0a\x0d

    obwohl ich schon gesehen hab das es mit \r\n\r\n gemacht wird


Anmelden zum Antworten