WSE 3.0 set tipo di contenuto
-
06-09-2019 - |
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)
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;
}