Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

TIdFormDataField передача XML

22.07.2013, 12:54. Показов 1495. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача POST запросом отправить xml-текст

C++
1
2
3
4
5
6
7
8
9
10
11
12
std::auto_ptr<TStringStream> SS(new TStringStream);
SS->LoadFromFile("xmlData.xml");
//SS->WriteString("<?xml version= \"1.0\"?>");
 
TIdFormDataField* DFXml= PostData->AddFormField("name","some");
DFXml->Charset= "UTF-8";
DFXml->ContentType="application/atom+xml";
 
DFXml->FieldStream= SS.get();
 
//...
Content = IdHTTP1->Post( Url, PostData.get() );
В файле "xmlData.xml" содержится текст xml

Типа
XML
1
2
3
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
...
Но передается изковерканых xml - добавляется "3D" ( TIdLogEvent выводит в лог )
XML
1
2
3
<?xml version=3D"1.0"?>
<entry xmlns=3D"http://www.w3.org/2005/Atom"
...
Ну и получаем логичный ответ сервера на это:
The value following "version" in the XML declaration must be a quoted string.
Связано это видимо с какой-то авто перекодировкой, но как её отключить непонятно.

Снятие флага hoForceEncodeParams не помогает.
C++
1
IdHTTP1->HTTPOptions= IdHTTP1->HTTPOptions>>hoForceEncodeParams;
Добавлено через 1 час 18 минут


Решило проблему указание типа трансфера -двоичным

C++
1
2
3
4
5
TIdFormDataField* DFXml= PostData->AddFormField("name","sss");
DFXml->Charset= "UTF-8";
DFXml->ContentType="application/atom+xml";
DFXml->HeaderCharSet= "UTF-8";
DFXml->ContentTransfer="binary";
Добавлено через 8 часов 16 минут
По умолчанию устанавливается Quoted-Printable поэтому ошибки.

Механизм конвертации "Quoted-Printable"

Этот механизм предназначен для представления данных, в основном состоящих из байтов, соответствующих символам, имеющим изображение в символьном наборе ASCII. В результате данного кодирования все байты будут иметь такие значения, гарантированные от дальнейшей модификации почтовым транспортом. Если конвертируемые данные в основном представляют собой ASCII-текст, то конечная их форма остается узнаваемой и читаемой для человека. Тело, полностью состоящее из ASCII-символов, также может быть конвертироавано в Quoted-Printable, что гарантирует его содержимому целостность при прохождении через всякие шлюзы, в которых происходит языковая перекодировка символов или преобразование концов строк и т.д.

В Quoted-Printable байты должны быть рпедставлены в соответствии со следующими правилами:

ПРАВИЛО #1: (обычное 8-битное представление). Каждый байт, кроме тех, которые используются для обозначения конца строки, может быть представлен с помощью двух шестнадцатиричных цифр, предворяемых знаком "=". При написании шестнадцатиричных цифр с A по F должны использоваться заглавные буквы. Кроме тех случаев, когда нижеследующие правила позволяют альтернативное кодирование, данное правило является обязательным.
http://kunegin.com/ref2/email/mime03.htm
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.07.2013, 12:54
Ответы с готовыми решениями:

XML передача на сервер
Ребят, такой глупый вопрос, имеется клиент и сервер, передавать средствами потоков или тупо передавать объекты могу......а вот как мне...

XML: передача класса
Меня интересует такой вопрос: Можно ли средствами XML задать класс объекту? как пример &lt;ITEM&gt; &lt;NAME&gt;obj1&lt;/NAME&gt; ...

Передача XML параметра
Доброго времени суток. Есть лист двумерных массивов (C#: List&lt;int&gt; , он сериализуется). Он передается параметром в хрнаимую процедуру: ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.07.2013, 12:54
Помогаю со студенческими работами здесь

Передача xml по TCP/IP
Здравствуйте господа программисты! Столкнулся с такой проблемой. Передаю я значит xmlDocument по сети, его структура: &lt;?xml...

Передача XML с сервера в JQUERY
Покажите, пожалуйста, какой-нибудь готовый примерчик. А то погуглив не нашёл ничего понятного.

Передача XML-структуры по сети
Есть БД с таблицей Addressee_mision при помощи WriteXml формирую xml-файл. connection.Open(); SqlDataAdapter adapter...

Передача данных из xml файла в БД
Добрый вечер! У меня вопрос касающиеся передачи данных из xml файла в таблицу БД Oracle У меня есть метод который производит соединение...

Передача перевода строки в XML
Здравсивуйте. Исходные данные: Из базы дынных получаю информацию, есть строки, в которых присутствует перевод строки. Формирую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru