Я пытаюсь построить адрес из переменной. Так что я могу передать это 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.
LPCWSTR pwszUrl1 = (LPCWSTR)combine.c_str();
std::string::c_str
возвращается const char *
, LPCWSTR
является const wchar_t *
.
Кастинг в LPCWSTR
врет компилятору и себе, что combine.c_str()
возвращается не указатель на строку широких символов.
Вы, вероятно, будете иметь больший успех с std::wstring
, который представляет строки широких символов.
Рассмотреть вопрос о прочтении Юникод в Windows API для дополнительной информации.
Других решений пока нет …