Wininet per HttpRequest Datei senden
-
Hallo,
ich möchte einen http-POST-request an ein php script schicken, das klappt alles auch ganz gut nur habe ich problem das ein teil der versendeten Daten nicht richtig am server ankommen, wodurch das script abbricht.static TCHAR hdrs[] = "Content-Type: multipart/form-data"; static TCHAR frmdata[] = "method=upload_file&key=xxxx-xxxx-xxxx-xxxx-xxxxxx&file=blbal.bla"; static const char* accept[2]={"*/*", NULL}; char buffer[256]; DWORD dwRead; HINTERNET hSession = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); HINTERNET hConnect = InternetConnect(hSession, "www.irgendeineseite.com", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1); HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", "index.php", NULL, NULL, accept, 0, 1); if(! HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata))) { cout<<"Fehler! " << GetLastError() <<endl; } if(! InternetReadFile(hRequest,buffer,sizeof(buffer),&dwRead)) { cout<<"Fehler2! " << GetLastError() <<endl; } buffer[dwRead] = 0; cout<<buffer<<endl; cout<<frmdata<<endl;Es scheitert immer beim übergeben des keys, könnte es sein, dass es an den "-" liegt? Ansonsten enthält der key nur normale buchstaben und Zahlen, keine Umlaute oder andere Sonderzeichen!
-
was soll das heißen, es scheitert?

-
Es wird im php-script überprüft ob der key in der datenbank vorhanden ist, diese Überprüfung scheitert. Der key stimmt aufjedefall, dass habe ich nachgeprüft. Daher denke ich das es an den "-" liegt.
Hat niemand eine idee?
-
ok, es liegt an dem Content-type. Benutze ich nämlich als content-type: application/x-www-form-urlencoded, funtkioniert es mit dem key, allerdings wird die datei dann nicht gesendet, benutze ich als content-type: multipart/form-data, kommen gar keine daten an. Das habe ich mit einem eigenem script getestet, muss man vllt bestimmte flags setzen? Ich bitte um Hilfe!
-
Ich verstehe Sie nicht. Von welcher Datei reden Sie?
-
Wieso schauen Sie im Zweifelsfall nicht einfach nach, was Ihr Browser für eine Anfrage an den HTTP Server sendet?
-
Es geht darum das eine Datei an den Server geschickt werden soll, z.B ein Bild. Ich kenne alle Variablen die das Script erwartet und in der dokumentation für das script steht, dass man als content-type: multipart/form-data bentutzen muss.
Allerdings kommt der Key mit diesem Content-type nicht richtig beim Server an, bzw. es wird ausgegeben, dass der key falsch ist. Mit application/x-www-form-urlencoded als content-type kommen zwar alle "normalen" Daten an, allerdings die Datei nicht, da ich dann die eine Fehlermeldung "filesize=0" bekomme.
Das habe ich auch ausprobiert indem ich mir ein eigenes Script geschrieben habe und mir alle POST Variablen ausgeben lassen habe. Dabei habe ich festgestellt, dass mit dem Content-type aus der Doku keine Daten ausgegeben werden.
Also ist mein Problem wie ich die normalen Daten und die Datei in einem Request verschickt bekomme.
Ich hoffe das Problem ist nun klar.
-
Kennt denn wirklich keiner eine Lösung für mein Problem?