Я пытаюсь преобразовать полную строку байтов из файла, открытого в двоичном режиме, в строку, закодированную в наборе символов ISO-8859-1.Насколько я понимаю, при преобразовании в ISO-8859-1 вся двоичная информация из файла сохраняется, поэтому она преобразуется в этот формат.Это допустимое утверждение?
Я работаю в C ++ (Visual Studio 2017), создавая исполняемый файл для использования на платформе Windows.У меня нет опыта в программировании HTTP.
У меня есть прототип кода, написанный на коде PowerShell, который успешно выполняет функции, которые я пытаюсь дублировать в C ++.В коде Power Shell HTTP-сообщение отправляется для загрузки файла прошивки на устройство.
- Сообщение содержит заголовки и тело:
- Сообщение использует multipart / форму-data protocol.
Пример заголовков сообщения:
Authorization: Bearer Yosda0IDRQuVaU_L0SnV5g==
Content-Type: multipart/form-data; boundary=42b745c8-4da8-454e-8c13-cbb5c1f7694f
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Пример тела сообщения:
--1a2fc07a-d882-4470-a1da-79716d34cd9b
Content-Disposition: form-data; name="upgrade_file"; filename=""
Content-Type: application/octet-stream
// File data (encoded in ISO-8859-1 format) goes here //
--1a2fc07a-d882-4470-a1da-79716d34cd9b
Content-Disposition: form-data; name="submit"
Install OS
--1a2fc07a-d882-4470-a1da-79716d34cd9b--
Сценарий PowerShell преобразует файл со следующими строками кода:
$bytes = [System.IO.File]::ReadAllBytes($file.FullName);
if ( $bytes )
{
$enc = [System.Text.Encoding]::GetEncoding(iso-8859-1);
$data = $enc.GetString($bytes);
}
После настройки заголовков и тела сообщение отправляется, и при запуске кода PowerShell загружается прошивка.
В моем коде на C ++ я разработал заголовки и коды до и после тела.Я думаю (не уверен), что мне просто нужно преобразовать файл в iso-8859-1, чтобы заставить сообщение работать сейчас.
Я использую libcurl для отправки сообщения.
res = curl_easy_perform(pCurl);
В настоящее время (без преобразования файла в iso-8859-1) я получаю следующее сообщение об ошибке при вызове функции:
Ошибка при получении данных от однорангового узла
Когда сообщение отправлено, я вижу, что загружены только некоторые байты.Я предполагаю, что это может быть из-за того, что данные файла не закодированы должным образом и когда они читают эти данные, они достигают некоторой точки, где данные находятся в формате, который они не могут обработать.