HTTPSendRequest bei Unicode: wsclen als optionalLength parameter falsch?
-
Ok, komischer Titel, ich versuche es mal zu erklären:
Ich habe ein Programm, das als Unicode kompiliert wird (laut wininet.h ist das define auf Unicode gestellt, wodurch z.B. HTTPSendRequest auf HTTPSendRequestW gemappt wird).
Wenn ich nun in einer Funktion die optionalen POST-Parameter als wchar_t übergebe, kommt immer nur die Hälfte an, da ich wcslen benutze:
HttpSendRequest(hreq, hdrs, (DWORD)wcslen(hdrs), postHeaders, (DWORD)wcslen(postHeaders));Diese Codebeispiele hatte ich im Internet gefunden, eventuell sogar auf einer Microsoft-Seite.
Ich ging nun auch davon aus, das HttpSendRequestW (durch das define gemappt) die Länge des postheaders richtig interpretiert, aber ist wohl nicht so. Das einzigste was funktioniert ist folgendes:HttpSendRequest(hreq, hdrs, (DWORD)wcslen(hdrs), postHeaders, (DWORD)wcslen(postHeaders)*sizeof(wchar_t));Nun frage ich mich, ob das nicht ein "Hack" ist und ich generell einen ganz anderen Fehler mache?
Ist diese Vorgehensweise richtig?
-
TheGrudge schrieb:
Nun frage ich mich, ob das nicht ein "Hack" ist und ich generell einen ganz anderen Fehler mache?
Nein, alles ist gut.

Die Dokumentation zu HttpSendRequest spricht auch eine klare Sprache:Size of the optional data, in bytes.
-
Mox schrieb:
TheGrudge schrieb:
Nun frage ich mich, ob das nicht ein "Hack" ist und ich generell einen ganz anderen Fehler mache?
Nein, alles ist gut.

Die Dokumentation zu HttpSendRequest spricht auch eine klare Sprache:Size of the optional data, in bytes.
Hmm dann sind wohl die Beispiele falsch gewesen... ok ich bin beruhigt
