2013-04-18 4 views
-2

Я пытаюсь создать адрес из переменной. Поэтому я могу передать его WinHttpOpenRequest.Ошибка 12006 в WinHttpCrackUrl

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. 
+0

'LPCWSTR pwszUrl1 = (LPCWSTR) combine.c_str();' Вы только что положили это приложение, чтобы закрыть компилятор? Глупый компилятор, что бы он знал. –

+0

Думаю. Я новичок в этом. – user1553142

+0

Тема говорит 'WinHttpCrackUrl', предоставленный код не имеет этого. –

ответ

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

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

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

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

Рассмотрите возможность чтения Unicode in the Windows API для получения дополнительной информации.