Hallo Forum,
ein Programm mit WININET in VC++ 2008 schreibe ich, um eine Datei auf nen Server hochzuladen. Libcurl und andere ähnliche Bibiotheken habe ich aus persönlichem Grund ausgeschlossen. D.h., ich schreibe zuerst lieber eine Eigene Funktion, die mit z.B. WINNET(ggf. vielleicht auch WinSock) zusammenarbeitet.
Hier der Code von mir:
Mit der Funktion HttpQueryInfo möchte ich abfragen, wie viele Bytes hochgeladen sind.
Dann mit der Funktion GetLastError habe ich den Fehlercode 12150 bekommen, der nach MSDN "The requested header could not be located" bedeutet, also es müsste irgendwie ein Fehler im Http Head stecken.
Kann jemand mir helfen?
LG
[edit]
Sorry für den Tippfehler im Titel. "WININET" soll statt WINNET stehen.
[/edit]
ein Programm mit WININET in VC++ 2008 schreibe ich, um eine Datei auf nen Server hochzuladen. Libcurl und andere ähnliche Bibiotheken habe ich aus persönlichem Grund ausgeschlossen. D.h., ich schreibe zuerst lieber eine Eigene Funktion, die mit z.B. WINNET(ggf. vielleicht auch WinSock) zusammenarbeitet.
Hier der Code von mir:
C++:
void Upload()
{
HINTERNET inet = InternetOpen("Http Upload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(inet != NULL)
{
HINTERNET connection = NULL;
HINTERNET request = NULL;
unsigned long flags = INTERNET_FLAG_PRAGMA_NOCACHE;
char buffer[1024];
DWORD InfoLevel, BufferLength;
connection = InternetConnect(inet,
"xxx.xx.x.x/upload", // Adresse vom Server
INTERNET_DEFAULT_HTTP_PORT,
NULL, //String
NULL, //String
INTERNET_SERVICE_HTTP,
flags,
1);
if(connection != NULL)
{
const char* ContentType = "multipart/form-data"; // Eine Datei (kein Bild oder was anderes) wird hochgeladen
request = HttpOpenRequest(connection,
"POST", // Verb
"C:\\xxx\\x", // Pfad der hochzuladenen Datei
NULL, //HTTP standard Version
NULL, //keine Referenz
&ContentType,
NULL,
NULL);
if(HttpQueryInfo(request, HTTP_QUERY_CONTENT_LENGTH, (LPVOID)buffer, &BufferLength, NULL))
cout << "Getting Query Info: " << buffer;
else
cout << "Error of getting Query Info: " << GetLastError() << endl;
if(!request)
cout << "Error of requesting: " << GetLastError();
else
cout << "Upload succeeded!" << endl;
}
InternetCloseHandle(request);
InternetCloseHandle(connection);
InternetCloseHandle(inet);
}
}
Mit der Funktion HttpQueryInfo möchte ich abfragen, wie viele Bytes hochgeladen sind.
Dann mit der Funktion GetLastError habe ich den Fehlercode 12150 bekommen, der nach MSDN "The requested header could not be located" bedeutet, also es müsste irgendwie ein Fehler im Http Head stecken.
Kann jemand mir helfen?
LG
[edit]
Sorry für den Tippfehler im Titel. "WININET" soll statt WINNET stehen.
[/edit]
Zuletzt bearbeitet: