Winhttpsendrequest и HTTPS в windows XP
Операционная система: Windows XP SP3. Приложение должно загрузить картинку с сайта через протокол https протокол. В результате WinHttpSendRequest возвращает ошибку -2146893018. Вот фрагмент кода:
Что я уже пробовал:
hRequest = WinHttpOpenRequest(hConnect, L"GET", Path, Protocol, 0, 0, WINHTTP_FLAG_SECURE); if(hRequest){ bResults = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0); ... }
Эта проблема существует только на WinXP. На Windows 7 - все работает нормально.
Но если попытаться загрузить другое изображение с другого сайта через http протокол (замена WINHTTP_FLAG_SECURE на 0), то все работает нормально. - Что случилось?
Richard MacCutchan
Код ошибки на самом деле 80090326: см. ошибка 80090326 - поиск Google[^] возможные причины.
Igor-84
Описывается следующим образом: "полученное сообщение было неожиданным или плохо отформатированным". Что я должен исправить в своем коде?
Richard MacCutchan
Вам нужно посмотреть на данные, передаваемые между вашим клиентом и сервером. Никто здесь не может догадаться, что с ним не так.
KarstenK
Я настоятельно рекомендую не использовать вышедшую на пенсию Windows XP в интернете. У него есть критические проблемы, и вы можете оказаться заражены некоторыми вредоносными программами, такими как зашифрованный диск.
Igor-84
И как это сделать?
P. S. картинка загрузки изображений из Google
Richard MacCutchan
Используйте свой отладчик или добавьте некоторый код регистрации. Отладка приложений-это неотъемлемая часть работы разработчика. Это навык, над которым нужно работать.
Igor-84
Использование новейших версий Windows не является решением в моем случае. Я использую Windows 7, и этот код хорошо работает здесь. И мне тоже нужно работать с этим кодом на Windows XP.
Igor-84
Хммм... Все, что говорит отладчик, это то, что WinHttpOpenRequest() работает нормально, а WinHttpSendRequest() возвращает GetLastError = -2146893018. Может быть, WinHTTP имеет некоторые ограничения на Windows XP? Но я не нашел никакой информации об этом в интернете.
Richard MacCutchan
Итак, вам нужно проверить содержимое сообщения, отправляемого в вашем WinHttpSendRequest, так как именно это вызывает ошибку. Вполне возможно, что вы используете версии кода или библиотеки, которые не совместимы с Windows XP.
Rick York
Мистер Маккатчен дал важный совет, который вы, возможно, не поняли. Почти вся документация Microsoft имеет дело с кодами ошибок в шестнадцатеричном формате, поэтому вы должны сделать то же самое для облегчения ссылок. Я всегда использую строку формата "%08X" при отображении кодов ошибок windows, и я рекомендую вам сделать то же самое.
Igor-84
Я не знаю, где я могу проверить содержание сообщения. В Windows XP я настроил Visual Studio 2008, создал новый проект и скомпилировал код загрузчика. А при отладке WinHttpSendRequest() возвращает тот же результат: "полученное сообщение было неожиданным или плохо отформатированным".
Richard MacCutchan
На самом деле нет никакого смысла размещать точно такие же детали в каждом сообщении. Вы уже знаете, что такое код ошибки и что он означает. Поэтому используйте свой отладчик для проверки значений, которые вы пытаетесь отправить на сервер. Как я уже говорил, никто здесь не может догадаться, что происходит.