Autenticar webservice - horus-ws-basico
30/03/2016
0
Estou desenvolvendo uma integração para enviar dados da farmácia municipal ao ministério da saúde.
O problema é que não sei como envio o usuário e senha.
Endereço do webservice: http://aplicacao.saude.gov.br/horus-ws-basico/RecebeDadosWS?wsdl
O retorno está sendo "Invalid user"
Veja o meu fonte:
var ws = new RecebeDadosWS();
var conDadosMun = new consultarAllDadosPorMunicipio();
conDadosMun.codigoMunicipio = "5104559";
conDadosMun.dataEnvio = "30/03/2016";
conDadosMun.nomeUsuario = "jumzanon@hotmail.com";
conDadosMun.numeroProtocolo = "123";
consultarAllDadosPorMunicipioResponse retorno = ws.consultarAllDadosPorMunicipio(conDadosMun);
MessageBox.Show(retorno.@return.horuswsmensagem.mensagemglobal);
Fabiane
Post mais votado
30/03/2016
Pois existem várias forma de fazer o que você quer e somente quem desenvolveu a API ou alguém que já usou poderá ajudá-la.
Jothaz
Mais Posts
30/03/2016
Fabiane
Tudo o que tem de documentação está nesse link:
http://portalsaude.saude.gov.br/index.php/o-ministerio/principal/leia-mais-o-ministerio/218-sctie-raiz/daf-raiz/ceaf-sctie/qualifarsus-raiz/eixo-informacao/l1-eixo-informacao/8508-envio-de-dados-webservice
O meu usuário foi criado e autorizado conforme a instrução do site, mas não tem um método ou instrução de como autenticar.
23/01/2017
Rodolfo
Por acaso já fez toda integração necessária com o Hórus?
Estou tentando usar o recebeDados, mas acho q o xml não está indo, quando consulto o protocolo, me retorna que o xml é inválido.
Att.
19/05/2017
Marcos Santos
Estou tentando integrar tbm e recebo a mesma resposta, mesmo usuário estando habilitado para acessar o webservice
25/07/2017
Daniel
Alguém já está tendo sucesso na integração com web service ou dispõem de algum manual mais completo?
19/12/2017
Luiz Yamashita
[]s
02/03/2018
Fernando
Estou em C#, mas qualquer ajuda é bem vinda...
13/07/2018
Lucas Silva
Consegui resolver através desse link: https://blogs.msdn.microsoft.com/mohamedg/2012/12/13/adding-http-headers-to-wcf-calls/
Meu código:
public class ClientMessageInspector : IClientMessageInspector
{
public ClientMessageInspector()
{
throw new NotImplementedException();
}
public ClientMessageInspector(string userAuthentication, string passwordAuthentication)
{
this.authorization = "Basic " + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(string.Format(":", userAuthentication, passwordAuthentication)));
}
private string authorization;
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
if (!string.IsNullOrEmpty(this.authorization))
{
if (request.Properties.Count == 0 || request.Properties[HttpRequestMessageProperty.Name] == null)
{
var property = new HttpRequestMessageProperty();
property.Headers["Authorization"] = this.authorization;
request.Properties.Add(HttpRequestMessageProperty.Name, property);
}
else
{
((HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]).Headers["Authorization"] = this.authorization;
}
}
return null;
}
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
throw new NotImplementedException();
}
}
public class CustomEndpointBehavior : IEndpointBehavior
{
private string userAuthentication;
private string passwordAuthentication;
public CustomEndpointBehavior()
{
throw new NotImplementedException();
}
public CustomEndpointBehavior(string userAuthentication, string passwordAuthentication)
{
this.userAuthentication = userAuthentication;
this.passwordAuthentication = passwordAuthentication;
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.ClientMessageInspectors.Add(new ClientMessageInspector(this.userAuthentication, this.passwordAuthentication));
}
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
// Nothing special here
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
// Nothing special here
}
public void Validate(ServiceEndpoint endpoint)
{
// Nothing special here
}
}
Na chamada para fazer autenticação:
WS_HORUS_HM.HorusWSAsyncClient soapTransmissaoDadosDispensacao = new WS_HORUS_HM.HorusWSAsyncClient();
soapTransmissaoDadosDispensacao.Endpoint.Behaviors.Add(new CustomEndpointBehavior(usuario, senha));
try
{
//Para enviar as informações para o WebService
WS_HORUS_HM.ProtocoloType protocoloResultado = soapTransmissaoDadosDispensacao.informarDispensacaoMedicamentoEmLote(informarDispensacaoMedicamentoEmLote);
//Para consultar as inconsistências
WS_HORUS_HM.InconsistenciaProcessamentoLoteType inconsistencias = soapTransmissaoDadosDispensacao.consultarInconsistencias(protocoloResultado);
if (inconsistencias != null)
{
foreach (WS_HORUS_HM.InconsistenciaProcessamentoLoteTypeInconsistencias inconsistencia in inconsistencias.inconsistencias)
{
}
}
}
catch(FaultException ex)
{
}
Clique aqui para fazer login e interagir na Comunidade :)