Pregunta

Tengo una pregunta simple, para usted, que sólo parece que no puede sacarlo de mi cabeza.

La situación es la siguiente:

  • crear y enviar una solicitud a un servicio web, utilizando WSE 3.
  • El servicio web está escrito en Java.

La mayoría de las cosas están muy bien, pero me parece que no puede tener un impacto en la ContentType ya sea de la WebResuest o WebResponse y que está causando algunos problemas.

El ErrorMessage me siguen dando es la siguiente:

Cliente encontró un tipo de contenido de la respuesta de 'application / xop + xml; type = "text / xml; charset = UTF-8"', pero se espera 'text / xml'. Error de la solicitud con el mensaje de error: ....

En los detalles del mensaje de error que tiene la respuesta a nuestra llamada desde el servidor y está llegando a través correctamente. Obviamente no es bueno, ya que es en este momento, ya que viene a través de una excepción:.)

Así que, ¿cómo podría establecer el tipo de contenido esperado para la respuesta?

Si estoy en lo cierto, la petición y la respuesta en WSE 3.0 tiene que tener la misma ContentType. Así que pensé que iba a tratar de establecer las request.Headers [HttpRequestHeader.ContentType] a la esperada, pero sin suerte. (También, puedo establecer contenttype del HttpWebRequest en unos cuantos lugares, pero ninguno de ellos parece hacer el truco)

¿Fue útil?

Solución

Esto ha sido resuelto por suerte, así que aquí está la solución para futuras referencias:

Nuestro cliente hereda de la clase WebServicesClientProtocol, en el que hay un método llamado GetWebResponse (..). Simplemente reemplazando ese método y el cambio de la ContentType de la respuesta parecía funcionar para nosotros.

    protected override WebResponse GetWebResponse(System.Net.WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        response.Headers[HttpResponseHeader.ContentType] = "text/xml";
        return response;
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top