powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Idhttp как правильно передать XML POST запросом?
18 сообщений из 18, страница 1 из 1
Idhttp как правильно передать XML POST запросом?
    #40109834
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Idhttp как правильно передать XML POST запросом?
Делаю так -не работает
Код: 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.
Function Tbanking.Post_1(sign:string;dat_start:string;dat_end:string;card:string):string;
 var //отправляем запрос в ПРИВАТ на частную карту
  str:TStringList;
  url, result1: string;
 begin
   url:='https://api.asdf.com/api'; //адрес сайта
   str:=TStringList.Create(); //создадим переменную str

   str.Add('<?xml version="1.0" encoding="UTF-8"?>');
   str.Add('<request version="1.0">');
   str.Add('<id>111111</id>'); //id
    str.Add('<data>');
   str.Add('<oper>cmt</oper>');
   str.Add('<wait>0</wait>');
   str.Add('<test>0</test>');
   str.Add('<payment id="">'); //???
   str.Add('<prop name="sd" value="'+dat_start+'" />'); //data start
   str.Add('<prop name="ed" value="'+dat_end+'" />'); //data end
   str.Add('<prop name="card" value="'+card+'" />'); //card
   str.Add('</data>');
   str.Add('</request>');

   Idhttp1.HTTPOptions := [hoKeepOrigProtocol,hoForceEncodeParams,hoNoProtocolErrorException,hoWantProtocolErrorContent];
   result:= IdHTTP1.Post(url,str); // Отправим запрос
   str.Free;
 end;


Появляется браузерное сообщение: "HTTP/1.1 466 OK."
но при отправке REST клиентом - все работает.
Все за ранее спасибо!
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109838
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравнивай отправляемые заголовки. Особенно в плане Content*.

За позднее пожалуйста.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109840
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какой кодировке уходит XML?
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109859
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
В какой кодировке уходит XML?


UTF-8
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109865
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
UTF-8
Уверены? Что-то я нигде у вас в коде этого не вижу
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109886
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Cola
UTF-8
Уверены? Что-то я нигде у вас в коде этого не вижу

str.Add('<?xml version="1.0" encoding="UTF-8"?>');
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109888
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно не то.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109890
Benten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola, Post запрос не так делается.
Попробуй Body-тело Post-запроса передать через TStream, а не через TstrigList, вот так:
Старайся использовать System.Net.HttpClient вместо устаревшего IdHttp ...
если конечно у тебя не Delphi 7 ...
Код: 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.
uses
    System.SysUtils
  , System.Classes
  , System.Net.HttpClient
  , System.Net.URLClient
  ;
Function Tbanking.Post_1(sign:string;dat_start:string;dat_end:string;card:string):string;
var
  HTTPClient: THTTPClient;
  Response: IHTTPResponse;
  RequestStream: TStream;
  str: TStringList;
  url, result1: string;
begin
  HTTPClient := THTTPClient.Create;
  str := TStringList.Create(); //создадим переменную str
  try
     //  str.Add  --  заполняем Body
     url := 'https://api.asdf.com/api'; //адрес сайта
     RequestStream := TStringStream.Create(str.Text, TEncoding.UTF8, False);
     Response := HTTPClient.Post(url, RequestStream);
     result1 := Response.ContentAsString(TEncoding.UTF8);

  finally
    RequestStream.Free;
    str.Free;
    HTTPClient.Free;
  end;
end;
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109891
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BentenPost запрос не так делается.
POST делается множеством различных способов. Но при любом из них заголовки
должны правильно описывать тело.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109892
Benten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Ну да, можно добавить

Код: pascal
1.
2.
3.
4.
5.
var
AHeaders: TNetHeaders;

    AHeaders := [TNetHeader.Create('Content-Type','text/xml; charset=UTF-8')];
    Response := HTTPClient.Post(url, RequestStream, nil, AHeaders);
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109911
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
str.Add('<?xml version="1.0" encoding="UTF-8"?>');
Это называется "Мамой клянусь, что это UTF-8"
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109942
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
str.Add('<?xml version="1.0" encoding="UTF-8"?>');


Не, это ты просто намекаешь принимающей стороне.
Но нигде не видно, в какой кодировке ОТПРАВЛЯЕШЬ.
Delphi по умолчанию - это UTF-32.
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40109951
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
...
Delphi по умолчанию - это UTF-32.
UTF-16.
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40110066
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо - все работает.
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40110083
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я запуталась совсем...
Делфи в какой кодировке хранить текстовые переменные типа string?
Мне нужно гарантировано получить string в UTF8
Подскажите пожалуйста как это сделать!
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40110089
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ColaДелфи в какой кодировке хранить текстовые переменные типа string?

Конкретно string - зависит от версии.

WideString - UTF-16
AnsiString - ANSI.
Utf8String - UTF-8.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40110144
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Что-то я запуталась совсем...
Делфи в какой кодировке хранить текстовые переменные типа string?
Мне нужно гарантировано получить string в UTF8
Подскажите пожалуйста как это сделать!
Смотря какая Delphi: 2007 и старше - однобайтовые string, 2009 и новее - юникод.
...
Рейтинг: 0 / 0
Idhttp как правильно передать XML POST запросом?
    #40110149
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Мне нужно гарантировано получить string в UTF8
Не пробовали использовать третий параметр в методе Post?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Idhttp как правильно передать XML POST запросом?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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