Como enviar para registro para um Webservice?

Delphi

06/03/2014

Prezados,

Como é que eu devo proceder para enviar vários registros para um Webservice? Exemplo: Quero dar um "post" para um webservice contendo um cadastro de produtos com mais de 2500 registros. Tentei fazer isso utilizando um loop, "postando" registro por registro da tabela, mas além de fica SUPER lento, o processo não chega até o final.

Grato e aguardo qualquer orientação.
M. C.

M. C.

Curtidas 0

Respostas

M. C.

M. C.

06/03/2014

Up!
GOSTEI 0
M. C.

M. C.

06/03/2014

Ainda continuo com essa dúvida. Será que ninguém poderia me ajudar?
GOSTEI 0
Lourival Queiroz

Lourival Queiroz

06/03/2014

Amigo, vc poderia usar JSON para isso. é mais pratico e rápido, pois como é texto, só tem vantagens .
GOSTEI 0
M. C.

M. C.

06/03/2014

Amigo, vc poderia usar JSON para isso. é mais pratico e rápido, pois como é texto, só tem vantagens .


Pois é, eu adoro JSON e sempre trabalho com ele. O problema é que quero fazer um "POST" com vários registros e não sei com fazer. GETs e POSTs com pouco registros sei fazer utilizando uma única requisição.

Me dê um exemplo de como preceder. Link ou coisa do tipo será bem vindo.

Grato e aguardo o seu retorno.

GOSTEI 0
M. C.

M. C.

06/03/2014

Up...!
GOSTEI 0
Valquiria Silva

Valquiria Silva

06/03/2014

olá, bom dia.

Se entendi sua dúvida, vc teria que fazer "array" com as essas informações e enviar.

tipo:
var
   Registro: TStrings;
   host: string;
begin
   IdHTTP1.Request.Clear;
   IDHttp1.Request.CustomHeaders.Clear;
   IdHTTP1.Request.ContentType := 'application/json';
   IdHTTP1.Request.Accept := 'application/json';

   Registro := TStringList.Create;
   try
       Registro.Add('{"produtos": {"id": "1", "descricao": "Teste 1" ,"ativo" : "false" }}');
       Registro.Add('{"produtos": {"id": "2", "descricao": "Teste 2" ,"ativo" : "true" }}');
       Registro.Add('{"produtos": {"id": "3", "descricao": "Teste 3" ,"ativo" : "false" }}');

       IdHTTP1.Post(host, Registro);
   finally
       FreeAndNil(Registro);
   end;


Você pode encontrar mais informações sobre json aqui

espero que ajude.
GOSTEI 0
M. C.

M. C.

06/03/2014

olá, bom dia.

Se entendi sua dúvida, vc teria que fazer "array" com as essas informações e enviar.

tipo:
var
   Registro: TStrings;
   host: string;
begin
   IdHTTP1.Request.Clear;
   IDHttp1.Request.CustomHeaders.Clear;
   IdHTTP1.Request.ContentType := 'application/json';
   IdHTTP1.Request.Accept := 'application/json';

   Registro := TStringList.Create;
   try
       Registro.Add('{"produtos": {"id": "1", "descricao": "Teste 1" ,"ativo" : "false" }}');
       Registro.Add('{"produtos": {"id": "2", "descricao": "Teste 2" ,"ativo" : "true" }}');
       Registro.Add('{"produtos": {"id": "3", "descricao": "Teste 3" ,"ativo" : "false" }}');

       IdHTTP1.Post(host, Registro);
   finally
       FreeAndNil(Registro);
   end;


Você pode encontrar mais informações sobre json aqui

espero que ajude.



Olá, Bom Dia!

Aparentemente você entendeu sim. Vendo o seu código, já consigo entender como proceder.

Faz tempo que procuro por isso... mas até o momento não consegui encontrar nada que me pudesse esclarecer tal duvida.

Só para constar: Eu trabalho com JSON faz muito tempo e adoro por o mesmo em uso por diversos motivos (não preciso citar), sendo assim, sobre o uso/aplicação do mesmo não tenho dúvidas. Como sempre utilizei somente para receber grandes volumes de retorno de um RESTFul, até aí tudo bem, mas como para enviar sempre foram poucos registros, geralmente "um-a-um" eu me saia bem, até que veio a necessidade e enviar grandes volumes também, daí nunca obtive sucesso.

Vou fazer uns testes me baseando no seu exemplo e te dou retorno. Caso seja necessário, gostaria de puder contar novamente com a sua ajuda;

Muitíssimo obrigado pela sua atenção.

Forte abraço!
GOSTEI 0
POSTAR