C++ WinInet - Simpler Post will einfach nicht?!?

ayk

Ensign
Registriert
Apr. 2004
Beiträge
163
Hi,

versuche nun schon seit paar Tagen nen POST-request per WinInet hinzubekommen. Mein Code ist sehr simpel. Ich verstehe nicht, warum er keinen response bekommt. Mein buffer ist stets leer!!

Kann mir evtl. jemand weiterhelfen?

Vielen DANK !!!

Code:
[B]#include[/B] "[U]stdafx.h[/U]"[B] 
#include[/B] <wininet.h> 
 
[B]using namespace[/B] std; 
 
[B]int[/B] _tmain([B]int[/B] argc, _TCHAR* argv[]) 
{ 
    [B]char[/B] buffer[8192]; 
    DWORD dwRead = 0; 
 
    [B]static[/B] LPCTSTR Url = "[U]http://localhost[/U]"; 
    [B]static[/B] LPCTSTR Browser = "[U]Firefox[/U]"; 
    [B]static[/B] LPCTSTR AcceptType = "[U]*/*[/U]"; 
    [B]static[/B] LPCTSTR ContentType = "[U]Content-Type: application/x-www-form-urlencoded[/U]"; 
    [B]static[/B] LPVOID Value = "[U]post=test[/U]"; 
 
    HINTERNET inet = InternetOpen(Browser, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
     
    HINTERNET url = InternetConnect(inet, Url, INTERNET_DEFAULT_HTTP_PORT, 0, 0, INTERNET_SERVICE_HTTP, 0, NULL); 
     
    HINTERNET request = HttpOpenRequest(url, "[U]POST[/U]", "[U]/index.php[/U]", NULL, HTTP_VERSION, &AcceptType, INTERNET_FLAG_KEEP_CONNECTION, NULL); 
     
    HttpSendRequest(request, ContentType, strlen(ContentType), "[U]test=1[/U]", [B]sizeof[/B]("[U]test=1[/U]")); 
 
    InternetReadFile(request, &buffer, [B]sizeof[/B](buffer), &dwRead); 
    buffer[dwRead] = '[U]\0[/U]'; 
 
    InternetCloseHandle(request); 
    InternetCloseHandle(url); 
 
    cout << buffer << endl; 
 
    [B]return[/B] 0; 
}
 
AW: [C++] WinInet - Simpler Post will einfach nicht?!?

Hast du denn mal mit Wireshark geprüft, was für ein Request dein Programm wirklich sendet? Und ob das Request z.B. mit einem von einem Browser übereinstimmt?
 
AW: [C++] WinInet - Simpler Post will einfach nicht?!?

Hi,

ja, habe ich mal getestet. Anscheinend kommt mein Programm nicht mal zum schicken, es kommt nichts raus. Der Fehler liegt sicher beim HttpOpenRequest, nur finde ich einfach nichts. Mit GetLastError bekomme ich nach dem Request nen Error 122. Keine Ahnung...
 
AW: [C++] WinInet - Simpler Post will einfach nicht?!?

122 ist:
ERROR_INSUFFICIENT_BUFFER
The data area passed to a system call is too small.

Es liegt wahrscheinlich an irgendeiner Puffergröße. Weiter habe ich jetzt keine Idee.
 
AW: [C++] WinInet - Simpler Post will einfach nicht?!?

Ja, hab ich auch schon gelesen.
Allerdings wird dem HttpOpenRequest kein Buffer meinerseits übergeben, muss also ein interner Fehler sein. Erst ab dem Request kommt mein Readbuffer ins Spiel.
 
Zurück
Oben