Consumir Servicio Web Apache

21/07/2005 - 10:29 por Jose | Informe spam
Hola a todos

Tengo un problema, en el trabajo necesito desarrollar un componente
que utilice un servicio Web para el envío de mensajes SMS. El servicio Web en
cuestión no está implementado en .NET y me está dando muchos problemas. Para
poder utilizarlo tengo que usar autenticación básica (al menos eso me han
dicho). Lo más extraño es que al añadir la referencia Web en el visual studio
.NET no me pide ninguna autenticación, además de esto, es el propio método
del servicio web el que me responde que no estoy autenticado, en vez de un
mensaje del servidor.
Tengo capturas de los paquetes HTTP que envío y capturas del
administrador del servidor web que dice que funcionan. La única diferencia
significativa está en la cabecera del primer paquete HTTP, en la siguiente
línea:

"Authorization: Basic cGlhj2dsOmcfswnNzcGgg7e="

En los paquetes que envío yo, no consigo que aparezca esta línea.

Por otra parte, he creado un pequeño servicio web en otro equipo
utilizando .NET y le he puesto autenticación básica. Al crear un cliente para
consumirlo y añadir la referencia web, me pide el user y el password. Y al
ejecutar el cliente y capturar los paquetes, sí se añade la linea de
autenticación en la cabecera.

¿Alquien sabe por que cuando me conecto con el servicio web en el servidor
apache no se manda esta línea en la cabecera?

Muchas gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
21/07/2005 - 10:42 | Informe spam
Prueba a realiza la autenticación de manera explicita:

Este codigo va de memoria.. asi que...

server.Service() s = new server.Service();
CredentialCache c = new CredentialCache();
c.Add(New Uri(http://servidor), "Basic", New NetworkCredential("user",
"password", "domain"))
s.Credentials = c;
//Llamar al web service...

Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Jose
21/07/2005 - 10:58 | Informe spam
Oksss, gracias, pero eso ya lo había probado, y ocurre lo mismo que al usar
el objeto NetworkCredential. No se añade la línea con la autenticación.

"Rodrigo Corral [MVP]" escribió:

Prueba a realiza la autenticación de manera explicita:

Este codigo va de memoria.. asi que...

server.Service() s = new server.Service();
CredentialCache c = new CredentialCache();
c.Add(New Uri(http://servidor), "Basic", New NetworkCredential("user",
"password", "domain"))
s.Credentials = c;
//Llamar al web service...

Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org




Respuesta Responder a este mensaje
#3 Jose
21/07/2005 - 14:20 | Informe spam
Hola a todos de nuevo,

He encontrado la solución al problema. He sobreescrito en la clase proxy
el método GetWebRequest de la siguiente forma:

protected override System.Net.WebRequest GetWebRequest(System.Uri uri) {
System.Net.WebRequest req = base.GetWebRequest(uri);
req.Headers.Add("Authorization", "Basic cGdSY2asOmFhdfanNGxwaWd9");
return req;
}

Gracias a todos

"Jose" escribió:

Hola a todos

Tengo un problema, en el trabajo necesito desarrollar un componente
que utilice un servicio Web para el envío de mensajes SMS. El servicio Web en
cuestión no está implementado en .NET y me está dando muchos problemas. Para
poder utilizarlo tengo que usar autenticación básica (al menos eso me han
dicho). Lo más extraño es que al añadir la referencia Web en el visual studio
.NET no me pide ninguna autenticación, además de esto, es el propio método
del servicio web el que me responde que no estoy autenticado, en vez de un
mensaje del servidor.
Tengo capturas de los paquetes HTTP que envío y capturas del
administrador del servidor web que dice que funcionan. La única diferencia
significativa está en la cabecera del primer paquete HTTP, en la siguiente
línea:

"Authorization: Basic cGlhj2dsOmcfswnNzcGgg7e="

En los paquetes que envío yo, no consigo que aparezca esta línea.

Por otra parte, he creado un pequeño servicio web en otro equipo
utilizando .NET y le he puesto autenticación básica. Al crear un cliente para
consumirlo y añadir la referencia web, me pide el user y el password. Y al
ejecutar el cliente y capturar los paquetes, sí se añade la linea de
autenticación en la cabecera.

¿Alquien sabe por que cuando me conecto con el servicio web en el servidor
apache no se manda esta línea en la cabecera?

Muchas gracias de antemano.




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida