powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / libcurl
89 сообщений из 89, показаны все 4 страниц
libcurl
    #39720396
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Помогите разобраться с libcurl.
Разбирался с библиотекой, не получается компилировать проект, ошибка [dcc32 Error] E2161 Error: RLINK32: Too many resources to handle.
Убрал всё своё, сделал пустой проект с http://parsing-and-i.blogspot.com/2010/11/delphi-curl-curlpas.html,
Код: 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.
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,curlobj,curl_h, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Curl: TCurl;
begin
  Curl := TCurl.Create(nil);
  Curl.URL := 'http://parsing-and-i.blogspot.com/';
  Curl.OutputFile := 'curl.html';
  if not Curl.Perform then
    ShowMessage(Curl.ErrorString);
  Curl.Free;
end;

end.



в каталог проекта положил pas от тебя и libcurl-3.dll, libeay32.dll, libssl32.dll
...
Рейтинг: 0 / 0
libcurl
    #39720409
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
libcurl
    #39720410
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем THTTPClient не угодил ?
...
Рейтинг: 0 / 0
libcurl
    #39720424
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievА чем THTTPClient не угодил ?
Мне нужно отправлять xml
...
Рейтинг: 0 / 0
libcurl
    #39720425
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonGallemar,

другие ссылки пробовал?

https://github.com/Mercury13/curl4delphi
http://www.programmersclub.ru/Работаем-в-сеть-с-помощью-libcurl/
https://github.com/Ruzzz/CurlPas
Да,и других им не посоветую
...
Рейтинг: 0 / 0
libcurl
    #39720437
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarМне нужно отправлять xml
Чему ?
...
Рейтинг: 0 / 0
libcurl
    #39720483
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievGallemarМне нужно отправлять xml
Чему ?
Что такое УТМ ЕГАИС имеете представление?
...
Рейтинг: 0 / 0
libcurl
    #39720484
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
libcurl
    #39720490
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Gallemar,

тебе правильно сказали не заморачиваться curl, а взять THTTPClient, потому что
...
Рейтинг: 0 / 0
libcurl
    #39720493
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А примером кинуть можете?
Оно?
Код: sql
1.
2.
3.
4.
5.
6.
7.
var
sl:tstringlist;
begin
sl:=tstringlist.create;
sl.add('var=значение');
idhttp.post('http://dupko.net',sl);
end;

...
Рейтинг: 0 / 0
libcurl
    #39720495
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GallemarА примером кинуть можете?
Оно?
Код: sql
1.
2.
3.
4.
5.
6.
7.
var
sl:tstringlist;
begin
sl:=tstringlist.create;
sl.add('var=значение');
idhttp.post('http://dupko.net',sl);
end;


а демок разве не хватает ? их там миллион
...
Рейтинг: 0 / 0
libcurl
    #39720498
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,для передали xml не увидел.
...
Рейтинг: 0 / 0
libcurl
    #39720501
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Gallemardefecator,для передали xml не увидел.
а разве файл XML отличается от любого другого ?
какой-то особенный ?
...
Рейтинг: 0 / 0
libcurl
    #39720503
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

да и индиевские либы справятся вполне. xml - это самый обычный текст, если что.
...
Рейтинг: 0 / 0
libcurl
    #39720506
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorGallemardefecator,для передали xml не увидел.
а разве файл XML отличается от любого другого ?
какой-то особенный ?
Ага
Код: pascal
1.
2.
3.
4.
5.
6.
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('d:\QueryClients.xml');
XMLDocument1.Active := true;
idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner',XMLDocument1);
end;


[dcc32 Error] Unit1.pas(34): E2250 There is no overloaded version of 'Post' that can be called with these arguments

Поэтому и прошу пример с xml.
...
Рейтинг: 0 / 0
libcurl
    #39720507
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

...
Рейтинг: 0 / 0
libcurl
    #39720509
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonGallemar,

да и индиевские либы справятся вполне. 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.
var
sl:tstringlist;
begin
sl:=tstringlist.create;
sl.add('<?xml version="1.0" encoding="UTF-8"?> ');
sl.add('<ns:Documents Version="1.0"');
sl.add('xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"');
sl.add('xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"');
sl.add('xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"');
sl.add('xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters"> ');
sl.add('<ns:Owner>');
sl.add('<ns:FSRAR_ID>020000442214</ns:FSRAR_ID>');
sl.add('</ns:Owner>');
sl.add('<ns:Document>');
sl.add('<ns:QueryClients>');
sl.add('<qp:Parameters>');
sl.add('<qp:Parameter>');
sl.add('<qp:Name>ИНН</qp:Name>');
sl.add('<qp:Value>7524187493</qp:Value>');
sl.add('</qp:Parameter>');
sl.add('</qp:Parameters>');
sl.add('</ns:QueryClients>');
sl.add('</ns:Document>');
sl.add('</ns:Documents>');
idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner',sl);
end;



Получаю ошибку 500.
...
Рейтинг: 0 / 0
libcurl
    #39720512
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,
сходу вижу одну проблему:
"UTF-8" ИНН
хотя может еще что то быть
...
Рейтинг: 0 / 0
libcurl
    #39720514
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonGallemar,
сходу вижу одну проблему:
"UTF-8" ИНН
хотя может еще что то быть
не оно. Пробовал менять, такая же ошибка
...
Рейтинг: 0 / 0
libcurl
    #39720518
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorGallemar,

тебе правильно сказали не заморачиваться curl, а взять THTTPClient, потому что
Заморачиваюсь с curl, потому что разобраться с передачей xml через indy не могу, примеров нет, а на форуме сидят эХсперты...
...
Рейтинг: 0 / 0
libcurl
    #39720519
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GallemardefecatorGallemar,

тебе правильно сказали не заморачиваться curl, а взять THTTPClient, потому что
Заморачиваюсь с curl, потому что разобраться с передачей xml через indy не могу, примеров нет, а на форуме сидят эХсперты...
эХсперты тебе уже сказали использовать простые вещи
curl не нужен, просто у тебя опыта нуль - что ты услышал, то и решил прикрутить
...
Рейтинг: 0 / 0
libcurl
    #39720520
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorэХсперты тебе уже сказали использовать простые вещи
С простыми вещами беда, уже писал выше. Пока порадовали картинкой.
defecatorcurl не нужен, просто у тебя опыта нуль - что ты услышал, то и решил прикрутить
опыт есть с curl.exe, но вызывать его из Delphi не считаю правильным.
...
Рейтинг: 0 / 0
libcurl
    #39720525
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Content-type правильный?
...
Рейтинг: 0 / 0
libcurl
    #39720526
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovGallemar,

Content-type правильный?
С отправкой разобрался, idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner','d:\QueryClients.xml')
теперь надо понять что ему не нравится, опять ошибка 500
...
Рейтинг: 0 / 0
libcurl
    #39720527
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarDmitry ArefievА чем THTTPClient не угодил ?
Мне нужно отправлять xml

TIDHTTP (InDy) умеет отправлять файлы и ничего дополнительного устанавливать не нужно
...
Рейтинг: 0 / 0
libcurl
    #39720529
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Gallemarпропущено...

Мне нужно отправлять xml

TIDHTTP (InDy) умеет отправлять файлы и ничего дополнительного устанавливать не нужно
Я уже понял, спасибо
...
Рейтинг: 0 / 0
libcurl
    #39720534
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarasviridenkovGallemar,

Content-type правильный?
С отправкой разобрался, idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner','d:\QueryClients.xml')
теперь надо понять что ему не нравится, опять ошибка 500


ставь сниффер для http и смотри, в каких местах разница при отправке из curl и из твоего приложения
...
Рейтинг: 0 / 0
libcurl
    #39720535
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovGallemar,

Content-type правильный?
Пробовал IdHttp1.Request.ContentType := 'XML'; и IdHttp1.Request.ContentType := 'text/XML';
всё равно ошибка 500
...
Рейтинг: 0 / 0
libcurl
    #39720539
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012Gallemarпропущено...

С отправкой разобрался, idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner','d:\QueryClients.xml')
теперь надо понять что ему не нравится, опять ошибка 500


ставь сниффер для http и смотри, в каких местах разница при отправке из curl и из твоего приложения
а проще способа нет?:(
...
Рейтинг: 0 / 0
libcurl
    #39720541
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievА чем THTTPClient не угодил ?
C indy пока непонятно откуда ошибка 500. Так что жду ответа по curl.
...
Рейтинг: 0 / 0
libcurl
    #39720543
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Gallemarsql2012пропущено...



ставь сниффер для http и смотри, в каких местах разница при отправке из curl и из твоего приложения
а проще способа нет?:(
тебе готовый код нужен ? $500, и как отправить файл в ЕГАИС у тебя в кармане, без curl
...
Рейтинг: 0 / 0
libcurl
    #39720544
cav_inc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

ContentType := 'text/XML';
- вот нет такого контекст типа в природе есть application/xml и его обычно сервер и проверяет

про ошибку 500 - 500 Internal Server Error[22] — любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0.

если возможно проблема в кодировке файла который собрал или ошибся при сборке файла.
потому что к примеру я из приложения сделанного в lazarus спокойно хожу к УТМ.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function getRequest(Url:string):String;
var
    Client:TfpHttpClient;
    i:integer;
begin
   Client:=TFPHttpClient.Create(Nil);
   try
    try
      //ShowMessage('START LOAD');
      Result:=Client.Get(Url);
    except
     on e:exception do begin
       ShowMessage('Ошибка при доступе к УТМ серверу '+#13+e.message+#13+
                   'Запрашиваемый адресс :'+url);
       Result:='ERROR';
     end;
    end;
   finally
    // ShowMessage('LOAD');
     Client.Free;
   end;
end;



оправка файла
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function postRequest(Url:string;FName:string;fpath:string):string;
var
    Client:TfpHttpClient;
    response:TStream;
    f:TFileStream;
begin
  Client:=TFPHttpClient.Create(Nil);
  f:=TFileStream.Create(fpath+'/responsq.xml',fmCreate);
  try
     response:=TStream.Create;
     Client.FileFormPost(AnsiString(Url),AnsiString('xml_file'),AnsiString(fpath+'/'+Fname),f);
//     Result:=Client.Post(Url,Fname);
  finally
    response.Free;
    f.Free;
    Client.Free;
  end;
  Result:='';
end;
...
Рейтинг: 0 / 0
libcurl
    #39720548
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cav_inc, этот же файл спокойно уходит через веб-морду утм.
...
Рейтинг: 0 / 0
libcurl
    #39720549
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorтебе готовый код нужен ? $500, и как отправить файл в ЕГАИС у тебя в кармане, без curl
Деньги зло,они людей портят
...
Рейтинг: 0 / 0
libcurl
    #39720550
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Gallemardefecatorтебе готовый код нужен ? $500, и как отправить файл в ЕГАИС у тебя в кармане, без curl
Деньги зло,они людей портят
зато меня обогощают
...
Рейтинг: 0 / 0
libcurl
    #39720560
4546
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemardefecatorпропущено...

а разве файл XML отличается от любого другого ?
какой-то особенный ?
Ага
Код: pascal
1.
2.
3.
4.
5.
6.
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('d:\QueryClients.xml');
XMLDocument1.Active := true;
idhttp1.post('http://10.10.1.233:8080/opt/in/QueryPartner',XMLDocument1);
end;


[dcc32 Error] Unit1.pas(34): E2250 There is no overloaded version of 'Post' that can be called with these arguments

Поэтому и прошу пример с xml.
Отрадно видеть, когда спустя годы выясняется, что тот, кто обвинял качество твоего кода в наличии говна - сам носит говно полными вёдрами


Правильно сказал классик: кто демонстративно громко разбирается в чужом говне - вероятно, самый главный говноед и есть
...
Рейтинг: 0 / 0
libcurl
    #39720569
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
THTTPClient
Остальное в данной ситуации, если больше заняться нечем ...
...
Рейтинг: 0 / 0
libcurl
    #39720581
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemardefecatorтебе готовый код нужен ? $500, и как отправить файл в ЕГАИС у тебя в кармане, без curl
Деньги зло,они людей портят

ты бесплатно же делаешь приложение? пропустил момент этот
...
Рейтинг: 0 / 0
libcurl
    #39720582
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarsql2012пропущено...



ставь сниффер для http и смотри, в каких местах разница при отправке из curl и из твоего приложения
а проще способа нет?:(


1) документация к сервису
2) сравнить, что отправляет браузер\что ты
3) ждать примера\чтобы кто-то показал как
4) гадать, подбирая параметры заголовков\тело запроса
...
Рейтинг: 0 / 0
libcurl
    #39720591
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А браузер нормально отправляет?
...
Рейтинг: 0 / 0
libcurl
    #39720592
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по ФТП нет возможностей отправлять?
...
Рейтинг: 0 / 0
libcurl
    #39720599
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

А так?
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  IdHttp,
  System.Classes;

const

 body = '<?xml version="1.0" encoding="UTF-8"?> ' +
        '<ns:Documents Version="1.0"' +
        'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
        'xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"' +
        'xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"' +
        'xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters"> ' +
        '<ns:Owner>' +
        '<ns:FSRAR_ID>020000442214</ns:FSRAR_ID>' +
        '</ns:Owner>' +
        '<ns:Document>' +
        '<ns:QueryClients>' +
        '<qp:Parameters>' +
        '<qp:Parameter>' +
        '<qp:Name>ИНН</qp:Name>' +
        '<qp:Value>7524187493</qp:Value>' +
        '</qp:Parameter>' +
        '</qp:Parameters>' +
        '</ns:QueryClients>' +
        '</ns:Document>' +
        '</ns:Documents>';

var
 http : TIdHttp;
 req  : TStream;
begin

 http := TIdHTTP.Create(nil);
 try

  http.Request.ContentType := 'text/xml';

  req := TBytesStream.Create(TEncoding.Utf8.GetBytes(body));
  try

   http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req);

   writeln(http.ResponseCode);

  finally

   req.Free;

  end;

 finally

  http.Free;

 end;

 readln;

end.

...
Рейтинг: 0 / 0
libcurl
    #39720603
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,


вот что curl отправляет, если выполнить команду:

авторPOST /opt/in/QueryPartner HTTP/1.1
Host: 10.10.1.233:8080
User-Agent: curl/7.61.0
Accept: */*
Content-Type: multipart/form-data; boundary=------------------------739b91867f18a5a1
Content-Length: 205

--------------------------739b91867f18a5a1
Content-Disposition: form-data; name="xml_file"; filename="client.xml"
Content-Type: application/xml

xml_data
--------------------------739b91867f18a5a1--

так что тебе уже дали выше работающий код, ничего сложного
...
Рейтинг: 0 / 0
libcurl
    #39720604
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cav_inc - привел пример
...
Рейтинг: 0 / 0
libcurl
    #39720609
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Исправил на мультипарт
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  IdHttp,
  IdMultipartFormData,
  System.Classes;

const

 body = '<?xml version="1.0" encoding="UTF-8"?> ' +
        '<ns:Documents Version="1.0"' +
        'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
        'xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"' +
        'xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"' +
        'xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters"> ' +
        '<ns:Owner>' +
        '<ns:FSRAR_ID>020000442214</ns:FSRAR_ID>' +
        '</ns:Owner>' +
        '<ns:Document>' +
        '<ns:QueryClients>' +
        '<qp:Parameters>' +
        '<qp:Parameter>' +
        '<qp:Name>ИНН</qp:Name>' +
        '<qp:Value>7524187493</qp:Value>' +
        '</qp:Parameter>' +
        '</qp:Parameters>' +
        '</ns:QueryClients>' +
        '</ns:Document>' +
        '</ns:Documents>';

var
 http : TIdHttp;
 req  : TIdMultiPartFormDataStream;
 data : TStream;
begin

 http := TIdHTTP.Create(nil);
 try

  data := TBytesStream.Create(TEncoding.Utf8.GetBytes(body));
  try

   req := TIdMultiPartFormDataStream.Create;
   try

    req.AddFormField('xml_file', 'text/xml', 'utf-8', data, 'client.xml');

    http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req);

    writeln(http.ResponseCode);

   finally

    req.free;

   end;

  finally

   data.Free;

  end;

 finally

  http.Free;

 end;

 readln;

end.

...
Рейтинг: 0 / 0
libcurl
    #39720625
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemardefecatorGallemar,

тебе правильно сказали не заморачиваться curl, а взять THTTPClient, потому что
Заморачиваюсь с curl, потому что разобраться с передачей xml через indy не могу, примеров нет, а на форуме сидят эХсперты...
Используй обычный TXMLDocument
XMLDoc сохраняй в stream и передавай в Indy TIdHTTP
И всё.
Какие тебе примеры-то?
...
Рейтинг: 0 / 0
libcurl
    #39720628
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747,

Если XML надо не получать а передавать я бы посоветовал вместо TXMLDocument (и т.п.) сгенерить текст XML вручную.
Быстрее будет.
...
Рейтинг: 0 / 0
libcurl
    #39720653
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вместо Indy использовал synapse, там есть класс THTTPsend, там для получения данных используем метод Get (HTTP.HTTPMethod('GET', myegaisurl+'/opt/out')) и дальше смотрим свойство http.Document.

Для парсинга полученного XML я использую TJclSimpleXML.

Для отправки данных я использую функцию HttpPostFile, типа так:

HttpPostFile(myegaisurl+'/opt/in/QueryRests_v2','xml_file','@QueryParameters.xml',stream,list), где в list получаем ответ, а в stream формируем наш xml-файл. Создаю xml-файл руками, не выпендриваюсь с компонентами XML, смысла не вижу.

стрим создаем так: stream := tstringstream.create(QueryText,TEncoding.UTF8); а QueryText :string - это наша сформированная строка
...
Рейтинг: 0 / 0
libcurl
    #39720742
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatCobalt747,

Если XML надо не получать а передавать я бы посоветовал вместо TXMLDocument (и т.п.) сгенерить текст XML вручную.
Быстрее будет.
Не надо вручную - там UTF8, плюс в названиях товаров могут быть всякие спецсимволы (кавычки и прочее).
Больших документов (на сотню мегов) там, скорее всего, не будет, так что вполне сойдёт TXMLDocument.
...
Рейтинг: 0 / 0
libcurl
    #39720814
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Cobalt747]rgreatCobalt747,
Не надо вручную - там UTF8, плюс в названиях товаров могут быть всякие спецсимволы (кавычки и прочее).
Больших документов (на сотню мегов) там, скорее всего, не будет, так что вполне сойдёт TXMLDocument.
Перевести полученную строку в UTF8 нет никаких проблем, да и заменить спецсимволами те, что входят в список запрещенных - тоже.
...
Рейтинг: 0 / 0
libcurl
    #39720881
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11А браузер нормально отправляет?
Браузер отправляет нормально. XML в UTF-8.

IdHttp1.Request.ContentType := 'application/xml';
IdHttp1.Request.ContentType := 'text/xml'; - пробовал разные, опять ошибка.
...
Рейтинг: 0 / 0
libcurl
    #39720886
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarБраузер отправляет нормально.

вот перед отправкой жмякай F12, вкладка СЕТЬ:
и далее сравнивай параметры
http://prntscr.com/l8ycan
...
Рейтинг: 0 / 0
libcurl
    #39720887
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, и так 500.
...
Рейтинг: 0 / 0
libcurl
    #39720897
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11GallemarБраузер отправляет нормально.

вот перед отправкой жмякай F12, вкладка СЕТЬ:
и далее сравнивай параметры
http://prntscr.com/l8ycan
Это FF?
...
Рейтинг: 0 / 0
libcurl
    #39720902
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
libcurl
    #39720929
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправил свойства, всё равно ошибка 500.
...
Рейтинг: 0 / 0
libcurl
    #39720937
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЭто FF?

у меня - да.

Ну потом щёлкай по самой строке запроса
http://prntscr.com/l8zce9

остальное смотри
...
Рейтинг: 0 / 0
libcurl
    #39720945
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarи так 500
А мультипарт вариантом?
...
Рейтинг: 0 / 0
libcurl
    #39720946
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarБраузер отправляет нормально. XML в UTF-8.
Хм... Тут "INN", а у тебя в примере "ИНН". Это нормально?
...
Рейтинг: 0 / 0
libcurl
    #39720947
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarБраузер отправляет нормально. XML в UTF-8.
Хм... Тут "INN", а у тебя в примере "ИНН". Это нормально?
специально поменял на латиницу
...
Рейтинг: 0 / 0
libcurl
    #39720952
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarи так 500
А мультипарт вариантом?
нет
...
Рейтинг: 0 / 0
libcurl
    #39720961
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
500 же точно не может быть с сетью связана? А то я по vpn подключен к сети с утм
...
Рейтинг: 0 / 0
libcurl
    #39720968
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatCobalt747,

Если XML надо не получать а передавать я бы посоветовал вместо TXMLDocument (и т.п.) сгенерить текст XML вручную.
Быстрее будет.
Не катит, всё равно ошибка 500. ХЗ что ему не так.
...
Рейтинг: 0 / 0
libcurl
    #39720972
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar500 же точно не может быть с сетью связана?
500 в HTTP это внутренняя ошибка сервера. Покажи тело ответа.
...
Рейтинг: 0 / 0
libcurl
    #39720975
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemar500 же точно не может быть с сетью связана?
500 в HTTP это внутренняя ошибка сервера. Покажи тело ответа.
Не могу.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
 http : TIdHttp;
 req  : TIdMultiPartFormDataStream;
 data : TStream;
 Response: TStringStream;
begin
http := TIdHTTP.Create(nil);
data := TBytesStream.Create(TEncoding.Utf8.GetBytes(body));
req := TIdMultiPartFormDataStream.Create;
req.AddFormField('xml_file', 'text/xml', 'utf-8', data, 'client.xml');
http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req,Response);
Showmessage(Response.DataString);


Вылетает на отправке и всё, ничего не возвращает.
...
Рейтинг: 0 / 0
libcurl
    #39720993
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarВылетает на отправке и всё, ничего не возвращает.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    resp := TStringStream.Create;
    try

     http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req, resp);

    finally

     writeLn(resp.DataString);
     resp.Free;

    end;


Что покажет?
...
Рейтинг: 0 / 0
libcurl
    #39721003
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarВылетает на отправке и всё, ничего не возвращает.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    resp := TStringStream.Create;
    try

     http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req, resp);

    finally

     writeLn(resp.DataString);
     resp.Free;

    end;


Что покажет?
Ничего
На resp.Free; ошибку i/o выдает и всё
...
Рейтинг: 0 / 0
libcurl
    #39721009
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarНичего
А http.Response.ResponseText?
...
Рейтинг: 0 / 0
libcurl
    #39721067
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,
---------------------------
Project1
---------------------------
I/O error 105.
---------------------------
ОК
---------------------------
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
 http : TIdHttp;
 req  : TIdMultiPartFormDataStream;
 data : TStream;
 resp: TStringStream;
begin
http := TIdHTTP.Create(nil);
data := TBytesStream.Create(TEncoding.Utf8.GetBytes(body));
req := TIdMultiPartFormDataStream.Create;
req.AddFormField('xml_file', 'text/xml', 'utf-8', data, 'client.xml');
    resp := TStringStream.Create;
    try
     http.Post('http://10.10.1.233:8080/opt/in/QueryPartner', req, resp);
    finally
    writeLn(http.Response.ResponseText);
    writeLn(resp.DataString);
    resp.Free;
    end;


...
Рейтинг: 0 / 0
libcurl
    #39721071
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Для работы writeln прилага должна быть консольной. Если у тебя c гуем -- замени writeln на ShowMessage.
...
Рейтинг: 0 / 0
libcurl
    #39721086
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemar,

Для работы writeln прилага должна быть консольной. Если у тебя c гуем -- замени writeln на ShowMessage.
Заменял, просто пустое окно.
...
Рейтинг: 0 / 0
libcurl
    #39721091
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее так :
ShowMessage(http.Response.ResponseText); - ошибка 500
ShowMessage(resp.DataString + 'ашипка'); - пустое окно
...
Рейтинг: 0 / 0
libcurl
    #39721093
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЗаменял, просто пустое окно
Тогда ставь реверс-прокси (fiddler или charles) и анализируй трафик.
...
Рейтинг: 0 / 0
libcurl
    #39721098
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, а может проще изначальный вопрос решить 21710079
...
Рейтинг: 0 / 0
libcurl
    #39721105
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarЗаменял, просто пустое окно
Тогда ставь реверс-прокси (fiddler или charles) и анализируй трафик.
fiddler не видит коннекты, может я что не так делаю?
...
Рейтинг: 0 / 0
libcurl
    #39721110
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarа может проще изначальный вопрос решить
Проще или нет не знаю, но полезней будет разобраться в чём проблема. Кстати, твой xml из этого примера , на основе которого я делал свой, кривой - нет пробелов перед атрибутами. Вполне возможно, что падает именно на парсинге.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 body = '<?xml version="1.0" encoding="UTF-8"?> ' +
        '<ns:Documents Version="1.0"' +
        ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
        ' xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"' +
        ' xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"' +
        ' xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters"> ' +
        '<ns:Owner>' +
        '<ns:FSRAR_ID>020000442214</ns:FSRAR_ID>' +
        '</ns:Owner>' +
        '<ns:Document>' +
        '<ns:QueryClients>' +
        '<qp:Parameters>' +
        '<qp:Parameter>' +
        '<qp:Name>ИНН</qp:Name>' +
        '<qp:Value>7524187493</qp:Value>' +
        '</qp:Parameter>' +
        '</qp:Parameters>' +
        '</ns:QueryClients>' +
        '</ns:Document>' +
        '</ns:Documents>';


Попробуй с этим.
...
Рейтинг: 0 / 0
libcurl
    #39721112
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, большое спасибо, заработало! С меня 100 грамм!
...
Рейтинг: 0 / 0
libcurl
    #39721119
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar> Kazantsev Alexey, большое спасибо, заработало! С меня 100 грамм!

Алексей, бери золотом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
libcurl
    #39721121
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Заплатка на карме - уже хорошо :)
...
Рейтинг: 0 / 0
libcurl
    #39721224
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey нет пробелов перед атрибутами. Вполне возможно, что падает именно на парсинге.


А пробелы какими символами должны быть?
...
Рейтинг: 0 / 0
libcurl
    #39721232
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarА пробелы какими символами должны быть?
Пробелами. #32
...
Рейтинг: 0 / 0
libcurl
    #39721234
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarА пробелы какими символами должны быть?
Пробелами. #32
странно, пробовал пробелами и табами, опять поймал 500. Ладно, разберусь.
...
Рейтинг: 0 / 0
libcurl
    #39721235
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЛадно, разберусь.
Проверь корректность отдаваемого xml браузером, он сразу покажет где косяк.
...
Рейтинг: 0 / 0
libcurl
    #39721242
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarЛадно, разберусь.
Проверь корректность отдаваемого xml браузером, он сразу покажет где косяк.
Браузером всё жрет и не давится
...
Рейтинг: 0 / 0
libcurl
    #39721247
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarБраузером всё жрет и не давится
Свой поток данных (в моем примере это data) сохрани в файл, а файл открой в браузере.
...
Рейтинг: 0 / 0
libcurl
    #39721425
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarВылетает на отправке и всё, ничего не возвращает.

подключай HTTP Logger - TIdLogFile и смотри, что там
файл в линуксовом формате создаётся, поэтому удобнее будет смотреть через какой-нибудь Notepad++
...
Рейтинг: 0 / 0
libcurl
    #39721467
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
трешиугар прям
...
Рейтинг: 0 / 0
libcurl
    #39721793
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyGallemarЛадно, разберусь.
Проверь корректность отдаваемого xml браузером, он сразу покажет где косяк.
просто через savetofile?
...
Рейтинг: 0 / 0
libcurl
    #39721895
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarпросто через savetofile?
Да. 21711901
...
Рейтинг: 0 / 0
89 сообщений из 89, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / libcurl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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