2009-08-21 12 views
12

Tengo una aplicación antigua que usa el proxy de servicio web clásico para interactuar con un servicio web Java. Hace un tiempo, el proveedor de servicios web decidió solicitar que se enviara un encabezado HTTP personalizado con cada solicitud para acceder al servicio; de lo contrario, las solicitudes se descartarían por completo (parece que esto es algún tipo de requisito del enrutador). Independientemente de la razón por la que necesito inyectar un encabezado HTTP personalizado en la solicitud.Agregar encabezados Http personalizados al proxy de servicio web

¿Hay alguna manera de interactuar con el cliente Http real para hacer cosas como agregar encabezados personalizados?

+0

me encontré con este problema cuando nuestra IT implementó mod_security Apache, que estaba buscando el Encaja encabezado, y encontró la solución más votados a continuación para que funcione. –

Respuesta

17

Debería poder hacer esto anulando el método GetWebRequest de la clase proxy en una clase parcial en un archivo separado. Después de llamar al método de la clase base, usted debe ser capaz de modificar el vuelto HttpWebRequest como usted quiera, y luego volverlo a partir del método:

public partial class MyServiceProxy { 
    protected override WebRequest GetWebRequest(Uri uri) { 
     HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
     // do what you will with request. 
     return request; 
    } 
} 
+1

Sí, eso hace el truco. Básicamente estoy generando proxies a través de código y pude generar la clase e inyectar código para agregar encabezados agregando una propiedad de encabezados que se verificó y usó en GetWebRequest para agregar encabezados adicionales. ¡Feo, pero funciona genial! –

+0

gracias por la solución. ¿Cómo puedo usar este proceso con mi proyecto de cliente de servicio web? – Jack

+0

@Jack: este es el proyecto del cliente del servicio web. Además, es mejor que uses WCF si tienes la opción. –

Cuestiones relacionadas