Ошибка 12006 в WinHttpCrackUrl

Я пытаюсь построить адрес из переменной. Так что я могу передать это WinHttpOpenRequest,

    char *uNameAddr = (char*) ExeBaseAddress + 0x34F01C;
printf("%s \n", uNameAddr);

string url = "http://xxxx.xxxx.com/xxxx/?u=";
string username = uNameAddr;string combine = url + username;

cout << combine << endl;
//http://xxxx.xxxx.com/xxxx/?u=MyUsername <--

URL_COMPONENTS urlComp;
LPCWSTR pwszUrl1 = (LPCWSTR)combine.c_str();
DWORD dwUrlLen = 0;

Тогда я должен передать это здесь:

hRequest = WinHttpOpenRequest( hConnect, L"GET", urlComp.lpszUrlPath,
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0);

urlComp.lpszUrlPath должно быть http://xxxx.xxxx.com/xxxx/?u=MyUsername

Любой совет? Мое приложение падает, когда оно обрабатывает эту часть.


ОШИБКА

 12006       ERROR_INTERNET_UNRECOGNIZED_SCHEME
The URL scheme could not be recognized or is not supported.

-2

Решение

LPCWSTR pwszUrl1 = (LPCWSTR)combine.c_str();

std::string::c_str возвращается const char *, LPCWSTR является const wchar_t *.

Кастинг в LPCWSTR врет компилятору и себе, что combine.c_str() возвращается не указатель на строку широких символов.

Вы, вероятно, будете иметь больший успех с std::wstring, который представляет строки широких символов.

Рассмотреть вопрос о прочтении Юникод в Windows API для дополнительной информации.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]