Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 1965 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Eu importei o WebService da ANVISA com o Web Service Toolkit do Lazarus:

http://sngpc.anvisa.gov.br/webservice/sngpc.asmx

Para o métoido EnviaArquivoSNGPC ele criou o tipo:

  EnviaArquivoSNGPC_Type = class(TBaseComplexRemotable)
  private
    FEmail : String;
    FSenha : String;
    FArq : TBase64StringRemotable;
    FHashIdentificacao : String;
  private
    function wstHas_Email() : Boolean;
    function wstHas_Senha() : Boolean;
    function wstHas_Arq() : Boolean;
    function wstHas_HashIdentificacao() : Boolean;
  public
    constructor Create();override;
    procedure FreeObjectProperties();override;
  published
    property Email : String read FEmail write FEmail stored wstHas_Email;
    property Senha : String read FSenha write FSenha stored wstHas_Senha;
    property Arq : TBase64StringRemotable read FArq write FArq stored wstHas_Arq;
    property HashIdentificacao : String read FHashIdentificacao write FHashIdentificacao stored wstHas_HashIdentificacao;
  end; 

 

Eu não estou conseguindo usar o parametro 

Arq: TBase64StringRemotable

Pelo que eu pesquisei eu deveria registrar alguma coisa com a propriedade: RegisterAttributeProperty()

Porém não estou tendo êxito

Código da chamada ....

var ClasseSNGPC : sngpcSoap;
    Arquivo : EnviaArquivoSNGPC_Type;
.
.
.
begin
  SYNAPSE_RegisterHTTP_Transport( );
  ClasseSNGPC := wst_CreateInstance_sngpcSoap( );
  Arquivo := EnviaArquivoSNGPC_Type.Create();
  Arquivo.Email := eMail;
  Arquivo.Senha := Senha;
  Arquivo.Arq.EncodedString := StringBase64;
  Arquivo.HashIdentificacao := Hash;
  try
    ClasseSNGPC.EnviaArquivoSNGPC( Arquivo );
  except
    on e: Exception do
      ShowMessage( E.Message );
  end;

 

Mensagem de erro:

 

Service exception :
   Code = "soap:Server"
   Message = "System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: buffer
   at System.Security.Cryptography.HashAlgorithm.ComputeHash(Byte[] buffer)
   at sngpc.sngpc.GetMD5HashFromByte(Byte[] file) in C:\inetpub\wwwroot\sngpc\webservice\sngpc.asmx.cs:line 479
   at sngpc.sngpc.EnviaArquivoSNGPC(String Email, String Senha, Byte[] Arq, String HashIdentificacao) in C:\inetpub\wwwroot\sngpc\webservice\sngpc.asmx.cs:line 902
   --- End of inner exception stack trace ---"

 

Se alguém tiver alguma sugestão...

 

 

 

 

 

 

 

 

  • Consultores
Postado

Sugiro anexar um projeto com o código para que alguém possa lhe ajudar

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Postado

Testei mas como não tenho acesso a eles pra enviar não consigo saber o que houve

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Postado

Seu problema está em carregar o zip para stream e dai converter,

a conversãoe stá correta só falta mesmo corrigir pra carregar o zip para o stream

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 3 semanas depois ...
  • Consultores
Postado

Chegou a testar no delphi? eu peguei e rodei no delphi convertendo o que me passou e ele rodou  então é algo bem especifico no lazarus

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Eu testei no Delphi 7, mais importando pelo WSDL Importer do Delphi 7.

De inicio, ficou idêntico ao Lazarus, os métodos de consulta funcionavam e o de envio de arquivo não.

E o erro que dava no Delphi 7 era exatamente o mesmo do Lazarus.

Eu localizei a solução para o Delphi 7 nesse tópico:

http://www.activedelphi.com.br/forum/viewtopic.php?p=412350&sid=572ef584ded98979457f777f925abe2d

Acontece que o Importer do Delphi 7 na Initialization, ficava originalmente da seguinte forma:

initialization
  InvRegistry.RegisterInterface(TypeInfo(sngpcSoap), 'http://tempuri.org/', '');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(sngpcSoap), 'http://tempuri.org/%operationName%');
 

Quando o correto seria:

initialization
  InvRegistry.RegisterInterface(TypeInfo(sngpcSoap), 'http://tempuri.org/', '');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(sngpcSoap), 'http://tempuri.org/%operationName%');
  InvRegistry.RegisterInvokeOptions(TypeInfo(sngpcSoap), ioDocument);

Ao adicionar essa última linha, no Delphi 7 o problema foi totalmente resolvido.

Por isso, acredito que o problema possa ser a ausência de algum registro na initialization do Lazarus.

Porém não tenho idéia do que poderia ser.

O Initialization do Lazarus depois de importado pelo Web Service Tool Kit fica da seguinte forma:

initialization
  typeRegistryInstance := GetTypeRegistry();

  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(ValidarUsuario_Type),'ValidarUsuario',[trioqualifiedElement]);
  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(ValidarUsuarioResponse),'ValidarUsuarioResponse',[trioqualifiedElement]);
  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(EnviaArquivoSNGPC_Type),'EnviaArquivoSNGPC',[trioqualifiedElement]);
  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(EnviaArquivoSNGPCResponse),'EnviaArquivoSNGPCResponse',[trioqualifiedElement]);
  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(ConsultaDadosArquivoSNGPC_Type),'ConsultaDadosArquivoSNGPC',[trioqualifiedElement]);
  typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(ConsultaDadosArquivoSNGPCResponse),'ConsultaDadosArquivoSNGPCResponse',[trioqualifiedElement]);

É completamente diferente do Delphi 7.

 

 

 

 

  • Este tópico foi criado há 1965 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.