Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Arnaldo

WebService com XML

Recommended Posts

Boa Noite.

 

estou precisando fazer em vb6

 

1 - Enviar um arquivo xml para um webservice

2 - Receber a resposta do webservice

 

se alguem puder mim ajudar eu agradeço

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

quintelab

 

Usando o VB6

 

o processo e dividido em 3 etapas

 

Primeira etapa

 

Criação do XML eu já consegui

 

Segunda etapa

 

Envio do xml para o site da anvisa (não sei fazer)

 

tenho +- assim como abaixo mais não sei aplicar

 

POST /snpc/webservice/snpc.asmx HTTP/1.1

host : homologacao.anvisa.gov.br

content-length: length

SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"

<?xml version"1.0" encoding"utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s

<soap:Body>

 

</soap:Body>

</soap:Envelope>

 

 

Terceira etapa

 

receber a resposta do envio (não sei fazer)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A Anvisa não tem nenhum tutorial ou manual de como essas informações devem ser passadas a ela? Isso pode ser feitos de muitas formas. E até mesmo receber a resposta também pode. Mesmo que seja em outra linguagem, se eles tiverem um tutorial já ajuda. Aí posta aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio Neto tem sim, o problema é que não consigo interpretar o que eles dizem, pois a codificação é em C# e em Delphi e eu uso vb6.

 

Abaixo o codigo do manual da anvisa

 

ENVIAR

 

POST /sngpc/webservice/sngpc.asmx HTTP/1.1

Host : homologacao.anvisa.gov.br

Content-Type: text/xml; charset-utf-8

Content-Length: length

SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"

<?xml version="1.0" encoding="utf-8"?>

 

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s>

<soap:Body>

<EnviarArquivoSNGPC xmlns="http://tempuri.org/">

<Email>String</Email>

<Senha>String</Senha>

<Arquivo>String</Arquivo>

<HashIdentificacao>string</HashIdentificacao>

</EnviarArquivoSNGPC>

</soap:Body>

</soap:Envelope>

 

 

CONSULTAR

 

POST /sngpc/webservice/sngpc.asmx HTTP/1.1

Host : sngpc.anvisa.gov.br

Content-Type: text/xml; charset-utf-8

Content-Length: length

SOAPAction: "http://tempuri.org/ConsultaDadosArquivoSNGPC"

<?xml version="1.0" encoding="utf-8"?>

 

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soap:Body>

<ConsultaDadosArquivoSNGPC xmlns="http://tempuri.org/">

<Email>string</Email>

<Senha>string</Senha>

<CNPJ>string</CNPJ>

<Hash>string</Hash>

</ConsultaDadosArquivoSNGPC>

</soap:Body>

</soap:Envelope>

 

Tentei adaptar mas tá faltando algo

------------>> estas 3 linhas abaixo não sei se tem que encaixar em algum lugar

POST /sngpc/webservice/sngpc.asmx HTTP/1.1

Host : sngpc.anvisa.gov.br

Content-Type: text/xml; charset-utf-8

Content-Length: length

------------------------------------

 

Função de envio que tentei adaptar, garimpada pela NET

 

Function Transmite(Email, Senha, Arquivo, Hash) As String

Dim strSoapAction As String

Dim strUrl As String

Dim strXml As String

txtOutput.text = ""

strUrl = "http://www.localhost/myweb/mywebService.asmx" ''''(Isso aqui não entendi comparando com o manual)

strSoapAction = "http://tempuri.org/EnviarArquivoSNGPC"

strXml = "<?xml version=""1.0"" encoding=""utf-8""?>" & _

"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & _

"<soap:Body>" & _

"<EnviarArquivoSNGPC xmlns=""http://tempuri.org/"">" & _

"<Email>" & Email & "</Email>" & _

"<Senha>" & Senha & "</Senha>" & _

"<Arquivo>" & Arquivo & "</Arquivo>" & _

"<Hash>" & Hash & "</Hash>" & _

"</EnviarArquivoSNGPC>" & _

"</soap:Body>" & _

"</soap:Envelope>"

 

'Resposta do webservice

Debug.Print PostWebservice(strUrl, strSoapAction, strXml)

 

End Function

 

Perdoem a burrice mas nunca mexi com webservice etc...

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

o webservice possui dois hosts diferentes

 

 

homologação

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

 

produção

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

 

cada um possui 3 módulos apenas.

 

ConsultaDadosArquivoSNGPC

EnviaArquivoSNGPC

ValidarUsuario

clique em cada link para ver as especificações de parâmetros, métodos, protocolo, charset encoding, etc..

 

acesse por exemplo

 

 

http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?op=ConsultaDadosArquivoSNGPC

nessa página da documentção aparentemente está errado..

http://tempuri.org/ConsultaDadosArquivoSNGPC
SOAPAction deveria ser algo tipo

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

 

 

aconselho a consultar o departamento técnico para obter as informações corretas e corrigirem essas páginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom deixando de lado a minha tentativa de adaptação transcrevo abaixo o manual retirado do site da SGNPC

 

1. OBJETIVO

 

O serviço webservice foi desenvolvido para que os estabelecimentos possam enviar o arquivo XML para a base de dados da Anvisa.

 

2. ACESSIBILIDADE:

 

Caso os estabelecimentos não queiram transmitir o XML pela página de Upload disponibilizada pelo site da Anvisa, o sistema do estabelecimento deverá acessar ao webservice pelo endereço remoto, utilizando o método de transmissão.

 

2.1 Acesso ao serviço:

 

Homologação

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

 

Produção

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

 

2.2 Funcionalidades (Homologação e Produção)

 

Esta funcionalidade tem por finalidade transmitir o arquivo XML selecionado pelo usuário, validar a estrutura do XML que deve estar de acordo com os schemas definidos e gravar o arquivo em tabela para ser, posteriormente, gravado na base de dados do SNGPC.

 

• EnviaArquivoSNGPC

 

Parâmetros:

• Email: string

• Senha: string

• Arquivo: string (XML)

• Hashindenficacacao: string (32 caracteres)

 

POST /sngpc/webservice/sngpc.asmx HTTP/1.1

Host : homologacao.anvisa.gov.br

Content-Type: text/xml; charset-utf-8

Content-Length: length

SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s>

<soap:Body>

<EnviarArquivoSNGPC xmlns="http://tempuri.org/">

<Email>String</Email>

<Senha>String</Senha>

<Arquivo>String</Arquivo>

<HashIdentificacao>string</HashIdentificacao>

</EnviarArquivoSNGPC>

</soap:Body>

</soap:Envelope>

 

Retorno:

 

• O retorno do método é do tipo string. Caso o envio seja concluído com sucesso o método irá retornar a seguinte mensagem “Arquivo recebido com sucesso, em DD/MM/YYY, ás HH:MM:SS. O Hash calculado foi 3c7caff13d167bd5f8f4bc6cb7040a44”, caso contrário o retorno será uma mensagem com o erro ocorrido.

 

Chamada:

 

• A forma como o webservice é instanciado depende da linguagem de programação

utilizada.

 

• Segue 2 exemplos: .NET e Delphi:

 

o Visual Studio .Net

 

Web Reference: Adicionar uma web reference com o endereço do webservice (ver item 2.1);

Instância: Após a web reference criada, com o nome dado, criar uma instancia do webservice na aplicação.

sngpcService.sngpc wssngpc = new sngpcService.sngpc();

Métodos: Para visualizar os métodos, criar uma variável string para receber o retorno do método.

string comp;

comp = wssngpc.EnviaArquivoSNGPC(edemail.Value.ToLower(),edsenha.Text, Arquivo, HashIdentificacao);

HashIdentificacao = Rotina MD5;

 

o Delphi

 

WSDL: Utilizar o Import WSDL com o endereço do webservice (ver item 2.1) para adicionar ao projeto a classe do webservice.

Instância: Após adicionar a classe ao projeto, criar uma variável com o nome da interface.

var ws: wssinaisSoap;

ws := GetwssinaisSoap();

Métodos: Para visualizar os métodos, criar uma variável string para receber o retorno do método.

string comp;

comp:= ws.EnviaArquivoSNGPC(email.ToLower(),

edsenha.Text, Arquivo, HashIdentificacao);

HashIdentificacao = Guid();

 

• HashIdentificação - Rotina MD5

private String geraHash(String Arquivo)

{String HashGerado;

ASCIIEncoding textConverter = new ASCIIEncoding();

MD5CryptoServiceProvider Md5Provider = new MD5CryptoServiceProvider();

Byte[] ArquivoByte;

Arquivo = Arquivo.Replace("\r","").Replace("\n","").Replace("\t","");

ArquivoByte = textConverter.GetBytes(Arquivo);

ArquivoByte = Md5Provider.ComputeHash(ArquivoByte);

HashGerado = ToHexString(ArquivoByte);

return HashGerado;

}

 

Quem puder mim ajudar eu agradeço

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arnaldo,

 

as especificacoes nos links para o SOAP estao incompletas..

 

nao tem como fazer a comunicacao

 

consulte o tecnico que te enviou esses docjmentos e pergunte se estah correto mesmo, porqe nem os links do soapaction estao especificados..

 

tempuri.org faz parte do template padrao de testes em ambiente local do .net Studio

 

aparentemente quem produziu essea documentos nao sabe o que fez ou nao prestou atencao e publicou a versao de testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logo no começo do manual tem isso.

 

Acesso ao serviço - "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx"

Produção "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx"

 

Não teria que trocar os endereos abaixo

 

SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s>

 

por "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx" ou por "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx"

 

No manual esta parte abaixo não teria que ser declarado tipo string ou é somente comentário?

 

-->>POST /sngpc/webservice/sngpc.asmx HTTP/1.1

-->>Host : homologacao.anvisa.gov.br

-->>Content-Type: text/xml; charset-utf-8

-->>Content-Length: length

-->>SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"

 

 

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s>

<soap:Body>

<EnviarArquivoSNGPC xmlns="http://tempuri.org/">

<Email>String</Email>

<Senha>String</Senha>

<Arquivo>String</Arquivo>

<HashIdentificacao>string</HashIdentificacao>

</EnviarArquivoSNGPC>

</soap:Body>

</soap:Envelope>

 

desde já peço desculpa pela ignorancia, é meu primeiro projeto com webservice, já li dezenas de material e cada um é diferente do outro, não encontrei nada correlato, a coisa é muito pronta sem explicações dos porquês.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

consulte o departamento técnico, pois esses dados estão incorretos

 

expliquei isso no post #8 e novamente no post #10..

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui o codigo abaixo na anvisa, agora não sei como utilizar no vb6

 

<?xml version="1.0" encoding="utf-8" ?>

- <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">'>http://schemas.xmlsoap.org/wsdl/">

- <wsdl:types>

- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

- <s:element name="ValidarUsuario">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Senha" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name="ValidarUsuarioResponse">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="ValidarUsuarioResult" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name="EnviaArquivoSNGPC">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Senha" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Arquivo" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="HashIdentificacao" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name="EnviaArquivoSNGPCResponse">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="EnviaArquivoSNGPCResult" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name="ConsultaDadosArquivoSNGPC">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Senha" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="CNPJ" type="s:string" />

<s:element minOccurs="0" maxOccurs="1" name="Hash" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name="ConsultaDadosArquivoSNGPCResponse">

- <s:complexType>

- <s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="ConsultaDadosArquivoSNGPCResult" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

</s:schema>

</wsdl:types>

- <wsdl:message name="ValidarUsuarioSoapIn">

<wsdl:part name="parameters" element="tns:ValidarUsuario" />

</wsdl:message>

- <wsdl:message name="ValidarUsuarioSoapOut">

<wsdl:part name="parameters" element="tns:ValidarUsuarioResponse" />

</wsdl:message>

- <wsdl:message name="EnviaArquivoSNGPCSoapIn">

<wsdl:part name="parameters" element="tns:EnviaArquivoSNGPC" />

</wsdl:message>

- <wsdl:message name="EnviaArquivoSNGPCSoapOut">

<wsdl:part name="parameters" element="tns:EnviaArquivoSNGPCResponse" />

</wsdl:message>

- <wsdl:message name="ConsultaDadosArquivoSNGPCSoapIn">

<wsdl:part name="parameters" element="tns:ConsultaDadosArquivoSNGPC" />

</wsdl:message>

- <wsdl:message name="ConsultaDadosArquivoSNGPCSoapOut">

<wsdl:part name="parameters" element="tns:ConsultaDadosArquivoSNGPCResponse" />

</wsdl:message>

- <wsdl:portType name="sngpcSoap">

- <wsdl:operation name="ValidarUsuario">

<wsdl:input message="tns:ValidarUsuarioSoapIn" />

<wsdl:output message="tns:ValidarUsuarioSoapOut" />

</wsdl:operation>

- <wsdl:operation name="EnviaArquivoSNGPC">

<wsdl:input message="tns:EnviaArquivoSNGPCSoapIn" />

<wsdl:output message="tns:EnviaArquivoSNGPCSoapOut" />

</wsdl:operation>

- <wsdl:operation name="ConsultaDadosArquivoSNGPC">

<wsdl:input message="tns:ConsultaDadosArquivoSNGPCSoapIn" />

<wsdl:output message="tns:ConsultaDadosArquivoSNGPCSoapOut" />

</wsdl:operation>

</wsdl:portType>

- <wsdl:binding name="sngpcSoap" type="tns:sngpcSoap">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

- <wsdl:operation name="ValidarUsuario">

<soap:operation soapAction="http://tempuri.org/ValidarUsuario" style="document" />

- <wsdl:input>

<soap:body use="literal" />

</wsdl:input>

- <wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="EnviaArquivoSNGPC">

<soap:operation soapAction="http://tempuri.org/EnviaArquivoSNGPC" style="document" />

- <wsdl:input>

<soap:body use="literal" />

</wsdl:input>

- <wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="ConsultaDadosArquivoSNGPC">

<soap:operation soapAction="http://tempuri.org/ConsultaDadosArquivoSNGPC" style="document" />

- <wsdl:input>

<soap:body use="literal" />

</wsdl:input>

- <wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

- <wsdl:service name="sngpc">

<documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />

- <wsdl:port name="sngpcSoap" binding="tns:sngpcSoap">

<soap:address location="http://sngpc.anvisa.gov.br/webservice/sngpc.asmx" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.