PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum WebService Tray Commerce - Retorno com multiplos parametros #523634

21/06/2015

0

Olá pessoal,

Alguem já criou alguma solução com SOAP/WSDL para consumir o WebService Tray Commerce da Locaweb?
Estou com a missão implementar isso em um aplicativo ERP com o Delphi 7, mas estou com dificuldades iniciais relacionadas
ao retorno de dados em alguns métodos.
Na maioria dos métodos, o retorno vem com múltiplos parâmetros, não há classes no cabeçalho para atender a todos os métodos, e com isso não disponho de algumas propriedades para obter alguns dados.

resumindo...
- comecei um novo projeto
- adicionei um componente HttpRio
- baixei o WSDLImport no site da embarcadero, executei-o pelo prompt de comando, adicionando a url
Ex: WSDLImport -p http://www.toyshopbrasil.com.br/webservice/v2/ws_servidor.php?wsdl
- gerei o codigo de cliente automático e adicionei-o ao projeto...

iniciei alguma codificação para cadastrar uma categoria no site, como a seguir:

procedure TForm1.Button1Click(Sender: TObject);
var

                          pLogin, pSenha: WideString;   
                       pId_categoria: Int64;
                    pId_categoriapai: Int64;
                          pDescricao: WideString;
                              pAtivo: WideString;

                             Servico: TrayWebServicewsdlPortType;

Begin

         pID_Loja:= xxxxx;
           pLogin:= '???';
           pSenha:= '???';
    pId_categoria:= 0;
 pId_categoriapai:= 0;
       pDescricao:= 'TESTE';
           pAtivo:= 'S';

  Servico:= GetTrayWebServicewsdlPortType(False, '', nil);
  Memo1.text:= Servico.fWSCadastraCategoria( pID_Loja,
                                               pLogin,
                                               pSenha,
                                        pId_categoria,
                                     pId_categoriapai,
                                           pDescricao,
                                               pAtivo
                                           );

End;


A gravação das informações está sendo realizada normalmente no banco de dados do site.
Coloquei o Memo1.text apenas para poder receber alguma coisa sem que o aplicativo apresente erro.
Resultado, ao receber a resposta do Servidor, só consigo obter o primeiro parâmetro, que poderia ser "Ok/no", já o segundo parâmetro de resposta que seria o codigo "503" (codigo da nova Categoria cadastrada), não estou conseguindo capturar...

coloquei mais 2 TMemos para monitorar a pergunta/resposta do xml e o resultado foi esse:
procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: String;
  var SOAPRequest: WideString);
begin
   MemoRequest.Text:= SOAPRequest;
end;


procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
  SOAPResponse: TStream);
var
  StrStream: TStringStream;
begin
  StrStream := TStringStream.Create('');
  try
    StrStream.CopyFrom(SOAPResponse, 0);
      SOAPResponse.Position:= 0;
    MemoResponse.Lines.Text:= StrStream.DataString;
  finally
    StrStream.Free;
  end;

end;

[img:descricao=Testando a aplicação]http://arquivo.devmedia.com.br/forum/imagem/342753-20150621-160021.jpg[/img]


info adicionais:
wsdl
operacoes

Será que o jeito é usar o XMLDocument para as situações onde não existe classe de resposta?
alguém poderia me ajudar, por favor?
Paulo Lima

Paulo Lima

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar