powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как передать XML-документ через idHTTP.Post?
19 сообщений из 19, страница 1 из 1
Как передать XML-документ через idHTTP.Post?
    #36596303
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version=" 1 . 0 " encoding="utf- 8 "?>  
 <request no=" 1 " sr="sender">
  <sec1>
    <text>Привет</text>
    <sec2="test"/>
  </sec1>
  <security>
   <login value="mylogin"/>
   <pass value="mypass"/>
   </security>
 </request>  

При заполнении xmldocument слово Привет из ansi перекодировал в utf8 получалось Привет
так и передавал

В Delphi 7 передавал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 var 
  s: TStrings;
  send_php: String ;
 begin 
  s := TStringList.Create;
  s:=xlmdocument1.xml;
  IdHTTP1.Post('http://www.mysite.ru/test.php',ss);
  ss.Free;
 end ;

Но как отправить то же самое в Delphi 2010 не знаю, от сервера приходят ?????? вместо Привет...

Уже 3 суток пытаюсь, но ничего не получается. Прошу Вашей помощи в этом вопросе.
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36596386
monsenior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,
В 2010 юзает юникод - отсюда ноги проблемы!
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36596388
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monseniorantox,
В 2010 юзает юникод - отсюда ноги проблемы!
Это я понял, а вот как юзать не могу придумать...
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36596395
monsenior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxmonseniorantox,
В 2010 юзает юникод - отсюда ноги проблемы!
Это я понял, а вот как юзать не могу придумать...
Используйте ансистринг, а если более правельно научите вашу пхп работать с юникодом)
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36596427
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в INDY 10.5.5 реальные глюки. Перерыл весь интернет ничего толкового не нашел по этому вопросу кроме TStringStream не нашел, но при xml этого было не достаточно.

Всё сделал... 3ое суток... За то доволен результатом :)
Так что лучше пользоваться indy 9 и Delphi 7

Топик закрыт, по крайней мере до завтра ;)
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36596431
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорят, что в indy 10.5.7 некоторые проблемы решены, по крайней мере с кодировкой Р - заглавной русской буквой. Но видимо лучше подождать, когда появится реально или хотя бы относительно стабильная юникодная indy
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36598402
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxГоворят, что в indy 10.5.7 некоторые проблемы решены, по крайней мере с кодировкой Р - заглавной русской буквой. Но видимо лучше подождать, когда появится реально или хотя бы относительно стабильная юникодная indy
Ну так установи последнюю версию и попробуй
тынц
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #36599163
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Пока всё работает, дистрибутив я качал, но ставить побоялся... Подожду, может delphi update установит
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как передать XML-документ через idHTTP.Post?
    #39773522
RESEARCH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги добрый день.

Необходимо отправить на сервер следующий запрос

Accept:application/json
Content-Type:application/xml
Authorization:Mindbox secretKey="5jiFKYsb0kOSbtM2WEY"

<operation>
<page>
<firstMindboxId>1</firstMindboxId>
<pageNumber>1</pageNumber>
<itemsPerPage>200</itemsPerPage>
</page>
</operation>

делаю так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
begin


  HandlerSocket := TIdSSLIOHandlerSocket.Create(HTTP);
  HandlerSocket.SSLOptions.Mode   := sslmClient;
  HandlerSocket.SSLOptions.Method := sslvSSLv23;
  HTTP:= TIdHTTP.Create(nil);
  HTTP.IOHandler := HandlerSocket;
  HTTP.HandleRedirects:=true;
  HTTP.Request.BasicAuthentication := false;;



  XML:='<operation>'                           +EOL+
         '<page>'                              +EOL+
           '<firstMindboxId>1</firstMindboxId>'+EOL+
           '<pageNumber>1</pageNumber>'        +EOL+
           '<itemsPerPage>10</itemsPerPage>'   +EOL+
          '</page>'                            +EOL+
       '</operation>';

   HTTP.Request.CustomHeaders.Add('Mindbox secretKey="5jiFKYsb...."');


   HTTP.Request.Host           := 'api.mindbox.ru';
   HTTP.Request.Accept         :='application/xml';
   HTTP.Request.ContentType    :='application/xml';
   HTTP.Request.BasicAuthentication:=false;





  URL:='https://api.mindbox.ru/v3/operations/sync&operation=BalanceChanges';
  LOGN:=TStringList.Create();
  RESP:= TStringStream.Create('');
  LOGN.Clear;
  LOGN.Add('Accept:application/xml');
  LOGN.Add('Content-Type:application/xml');
  LOGN.Add('Authorization:Mindbox secretKey="5jiFKYsb0k....."');
  LOGN.Add(XML);



  repeat
  try RSP:=HTTP.Post(URL,LOGN) except writeln('ERR>'+HTTP.ResponseText+HTTP.Response.ResponseText) end;
  writeln(RSP);



получаю 401 Bad Request

подскажите куда сувать эти поля

Accept:application/json
Content-Type:application/xml
Authorization:Mindbox secretKey="5jiFKYsb0k........"

в общий StringList или в HTTP.Request

а так же правильно ли я передаю XML ?
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773524
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RESEARCHделаю так

Выглядит так, будто ты тупо скопипастил вместе все нагуглившиеся куски даже не пытаясь
разобраться что они делают и соотнести с тем, что тебе требуется. Не делай так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773543
RESEARCH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
о коллеги у меня серьезные успехи

ошибка изменилась на 400 BadRequestText

очевидно неправильно передаю XML но как ?

на данный момент код выглядит так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  HandlerSocket := TIdSSLIOHandlerSocket.Create(HTTP);
  HandlerSocket.SSLOptions.Mode   := sslmClient;
  HandlerSocket.SSLOptions.Method := sslvSSLv23;
  HTTP:= TIdHTTP.Create(nil);
  HTTP.IOHandler := HandlerSocket;
  HTTP.HandleRedirects:=true;

  HTTP.Request.Host           :='api.mindbox.ru';
  HTTP.Request.Accept         :='application/xml';
  HTTP.Request.ContentType    :='application/xml';

  HTTP.Request.CustomHeaders.Add('ContentType');
  HTTP.Request.CustomHeaders.Values['ContentType']:='application/xml';
  HTTP.Request.CustomHeaders.Add('Accept');
  HTTP.Request.CustomHeaders.Values['Accept']:='application/xml';
  HTTP.Request.CustomHeaders.Add('Authorization');
  HTTP.Request.CustomHeaders.Values['Authorization']:='Mindbox secretKey="5jiFKYsb0k..."';

     XML:='<operation>'                        +EOL+
         '<page>'                              +EOL+
           '<firstMindboxId>1</firstMindboxId>'+EOL+
           '<pageNumber>1</pageNumber>'        +EOL+
           '<itemsPerPage>10</itemsPerPage>'   +EOL+
          '</page>'                            +EOL+
       '</operation>'+EOL;

  URL:='https://api.mindbox.ru/v3/operations/sync?endpointId=RiglaWebAPI&operation=BalanceChanges';
  LOGN:=TStringList.Create();
  Param:= TStringStream.Create(XML);

  repeat
  try RSP:=HTTP.Post(URL,Param) except writeln('ERR>'+HTTP.ResponseText) end;
  writeln(RSP);




и еще как прочитать ответ от сервера который возвращает например postman
в ResponseText его нет


{
"status": "ProtocolError",
"errorMessage": "Доступ запрещён.",
"errorId": "3dbff5be-15d9-4bc6-a0c7-f5fa66f0c7e7",
"httpStatusCode": 403
}

кроме
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773596
RESEARCH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги спасибо за поддержку, советские ученые добились успеха.

Вот окончательный рабочий вариант кода

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  HandlerSocket := TIdSSLIOHandlerSocket.Create(HTTP);
  HandlerSocket.SSLOptions.Mode   := sslmClient;
  HandlerSocket.SSLOptions.Method := sslvSSLv23;
  HTTP:= TIdHTTP.Create(nil);
  HTTP.IOHandler := HandlerSocket;

  HTTP.Request.Accept         :='application/xml';
  HTTP.Request.ContentType    :='application/xml';
  HTTP.Request.CustomHeaders.Values['Authorization']:='Mindbox secretKey="'+PASS+'"';
  //URL:='https://api.mindbox.ru/v3/operations/sync?endpointId=WebAPI&operation=BalanceChanges';
  XML:='<operation>'                           +
        '<page>'                               +
           '<firstMindboxId>1</firstMindboxId>'+
           '<pageNumber>1</pageNumber>'        +
           '<itemsPerPage>10</itemsPerPage>'   +
          '</page>'                            +
       '</operation>';
  LOGN:=TStringList.Create();
  LOGN.Add(XML);

  try RSP:=HTTP.Post(URL0,LOGN) except writeln('ERR>'+HTTP.ResponseText) end;
  RSP:=UTF8Decode(RSP);
  writeln(RSP);



добавлю что для работы TIdSSLIOHandlerSocket необходимы положить в папку с кодом две библиотеки libelay32.dll и ssleay32.dll
скачать которые можно здесь для разных платформ
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Метод научного тыка в действии.
RESEARCHНеобходимо отправить на сервер следующий запрос
Accept: application/json

RESEARCH HTTP.Request.Accept :=' application/xml ';
Прэлеeсно...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773602
RESEARCH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо отправить на сервер следующий запрос
Accept:application/json

этот параметр влияет на формат возвращаемых данных, можно поставить и так и так
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773604
RESEARCH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати пока остался нерешенный один вопрос

при первом вызове HTTP.Get или Post вылетает исключение "Не подгружены SSL библиотеки"
приходится пропускать первый вызов по try except end;

потом они как то сами подгружаются, что то не соображу как их подгрузить при инициализации
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773680
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в последних версиях делфи нет никаких проблем с SSL
и есть нативный THttpClient без всяких инди, регистраций и SMS и DLL
переход занимает несколько минут
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773798
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinTHttpClient

А как там дела с куками обстоят? Можно ли менять, получать, удалять?
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39773801
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinTHttpClient

имеется ввиду TNetHTTPClient?

http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_an_HTTP_Client
...
Рейтинг: 0 / 0
Как передать XML-документ через idHTTP.Post?
    #39774086
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11krapotkinTHttpClient

А как там дела с куками обстоят? Можно ли менять, получать, удалять?
http://docwiki.embarcadero.com/Libraries/Rio/en/System.Net.HttpClient.TCookies
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как передать XML-документ через idHTTP.Post?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]