Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Idhttp как правильно передать XML POST запросом? / 18 сообщений из 18, страница 1 из 1
07.11.2021, 18:24
    #40109834
Cola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
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
07.11.2021, 18:36
    #40109838
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
Сравнивай отправляемые заголовки. Особенно в плане Content*.

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


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

str.Add('<?xml version="1.0" encoding="UTF-8"?>');
...
Рейтинг: 0 / 0
07.11.2021, 22:50
    #40109888
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
Совершенно не то.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.11.2021, 23:00
    #40109890
Benten
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
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
07.11.2021, 23:04
    #40109891
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
BentenPost запрос не так делается.
POST делается множеством различных способов. Но при любом из них заголовки
должны правильно описывать тело.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.11.2021, 23:09
    #40109892
Benten
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
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
08.11.2021, 00:54
    #40109911
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
Cola
str.Add('<?xml version="1.0" encoding="UTF-8"?>');
Это называется "Мамой клянусь, что это UTF-8"
...
Рейтинг: 0 / 0
08.11.2021, 10:20
    #40109942
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Idhttp как правильно передать XML POST запросом?
Cola
str.Add('<?xml version="1.0" encoding="UTF-8"?>');


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

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

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


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