powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / libcurl
25 сообщений из 89, страница 2 из 4
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
25 сообщений из 89, страница 2 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / libcurl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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