Domanda

Ho una domanda semplice, per te, che io proprio non riesco a ottenere la mia testa intorno.

La situazione è la seguente:

  • Creare e inviare una richiesta a un servizio Web, utilizzando WSE 3.
  • Il servizio web è scritto in Java.

La maggior parte delle cose che vanno bene, ma non posso sembrano avere un impatto sulla ContentType sia del WebResuest o WebResponse e che sta causando alcuni problemi.

L'errormessage Continuo a ricevere è la seguente:

Client trovato un tipo di contenuto di risposta di 'application / XOP + xml; type = "text / xml; charset = utf-8"' ma previsto 'text / xml'. Richiesta non riuscita con il messaggio di errore: ....

Nei dettagli del messaggio di errore che ha la risposta alla nostra chiamata dal server e sta arrivando attraverso correttamente. Ovviamente non è buona in quanto è al momento come sta arrivando attraverso un'eccezione:.)

Quindi, come potrei impostare il tipo di contenuto previsto per la risposta?

Se non sbaglio, la richiesta e la risposta in WSE 3.0 deve avere lo stesso ContentType. Così ho pensato di provare a impostare le request.Headers [HttpRequestHeader.ContentType] a quello atteso, ma senza fortuna. (Anche, posso impostare contenttype del HttpWebRequest in alcuni posti, ma nessuno di loro sembrano fare il trucco)

È stato utile?

Soluzione

Questo è stato risolto per fortuna, ecco la soluzione di riferimento futuro:

Il nostro cliente eredita dalla classe WebServicesClientProtocol, in cui c'è un metodo chiamato GetWebResponse (..). Semplicemente ignorando che il metodo e cambiando il ContentType della risposta sembrava funzionare per noi.

    protected override WebResponse GetWebResponse(System.Net.WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        response.Headers[HttpResponseHeader.ContentType] = "text/xml";
        return response;
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top