Fórum Erro consumindo WebService feito em C# no Delphi 7 #384281

22/08/2010

0

Caros, estou consumindo um WebService feito em C# no Delphi 7 e para eu conseguir importar o WSDL eu tive que baixar e usar o WSDLImp.   Pelo que pude notar o problema esta no XML request gerado pelo delphi, abaixo estão o XML gerado pelo HTTPRio e o gerado pelo SoapUI.   o XML request do SOAP é: <?xml
version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
       <ProductInsertUpdate xmlns="http://tempuri.org/">
          <productVO xmlns="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfService.Contracts">
             <BrandId>1</BrandId>
             <CategoryId>2</CategoryId>
             <DepartmentId>1</DepartmentId>
             <Description>descricao</Description>
             <DescriptionShort>DS</DescriptionShort>
             <Id>99990</Id>
             <IsActive>false</IsActive>
             <IsVisible>false</IsVisible>
             <KeyWords>KW</KeyWords>
             <LinkId>LinkId99990</LinkId>
             <Name>ALTERDATA_99990</Name>
             <RefId>refId99990</RefId>
             <ReleaseDate>2010-08-22T18:08:34.492Z</ReleaseDate>
             <TaxCode>5102</TaxCode>
             <Title>Titulo</Title>
          </productVO>
       </ProductInsertUpdate>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>   e o RESPONSE me mostar o erro: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode xmlns:a="
Pedro Souza

Pedro Souza

Responder

Posts

22/08/2010

Marco Salles

No Delphi 7 o WDSL foi implementado utilizando o ASP.NET 1.1 . Porém se criarmos Serviços no Asp.Net em versão superiores as regras mudaram um pouco. Algums incompatibilidades podem serem corrigidas usando um Artificio ...   Este artificio é especificar o ioDocument como InvokeOptions para o tipo de interface SOAP, como segue:
 InvRegistry.RegisterInvokeOptions (TypeInfo (xxx), ioDocument);
Onde xxx é o nome do seu tipo de interface SOAP.

Essa linha de código precisa ser adicionado à seção de inicialização da unidade de importação gerado Win32.  
Responder

Gostei + 0

22/08/2010

Pedro Souza

Grato pelo rápido retorno Marco.   Mas já esta assim, veja um trecho da unit gerada pelo WSDLImp.exe:   type   ProductInsertUpdate  = class;                 { "
Responder

Gostei + 0

22/08/2010

Marco Salles

eu nunca utilizei o WSDLImp .. Vc tem certeza desta compatibilidade ??? Porque vc não tenta usar o WSDL do Delphi e adiciona na mão mesmo  o Artificio citado   O Caso foi parecido com o seu .   Consulta eu consegui fazer , mas passar parametros não ...   e na epoca eu resolvi com este artificio
Responder

Gostei + 0

23/08/2010

Pedro Souza

Marco, grato pela ajuda, mas eu consegui resolver o problema usando o Delphi 2010.
Responder

Gostei + 0

23/08/2010

Marco Salles

beleza Pedro , como eu disse desde do inicio : "No Delphi 7 o WDSL foi implementado utilizando o ASP.NET 1.1 . Porém se criarmos Serviços no Asp.Net em versão superiores as regras mudaram um pouco. " Ja o delphi2010 a compatibilidade é total se não me engano ate o ASP.NET 3.5    
Responder

Gostei + 0

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

Aceitar