2013-07-26 26 views
5

Ho problemi a parlare con Java WS. Sto usando l'associazione "wsHttpBinding" con i certificati client per l'autenticazione, la codifica dei messaggi è impostata su "Testo", .net framework è 4.0. Il lato server è Java e non ho alcun controllo su di esso. La connessione viene inoltrata tramite Fiddler (questo è il modo in cui vedo le richieste sul filo, molto più user friendly rispetto alla traccia "System.Net").Client WCF che parla con Java WS, eccezione: il tipo di contenuto application/xop + xml; type = "application/soap + xml" del messaggio di risposta

eccezione che ottengo è seguente:

Il tipo di contenuto application/XOP + xml; type = "application/soap + xml" del messaggio di risposta non corrisponde al tipo di contenuto del bind (application/soap + xml; charset = utf-8).

Se cambio la codifica messaggio a "MTOM", quindi i cambiamenti di eccezione:

Il tipo di contenuto application/XOP + xml; type = "application/soap + xml" del messaggio di risposta non corrisponde al tipo di contenuto del bind (multipart/related; type = "application/xop + xml").

Il server accetta le codifiche dei messaggi "Testo" e "Mtom" per richiesta e la risposta è sempre la stessa. Questa è la risposta cruda che sto ricevendo dal server:

HTTP/1.1 200 OK 
X-Backside-Transport: OK OK 
Connection: Keep-Alive 
X-Powered-By: Servlet/3.0 
SOAPAction: "" 
Content-Type: application/xop+xml; type="application/soap+xml" 
Content-Language: en-US 
Date: Thu, 25 Jul 2013 13:05:09 GMT 
Content-Length: 628 

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope ... </env:Envelope> 

Da tutti i documenti che ho letto, risposta che viene restituito è da qualche parte tra il messaggio SOAP regolare e messaggio MTOM. Dico questo perché ogni esempio che ho visto dice che la richiesta e la risposta MTOM usano MIME come una busta per la comunicazione: il messaggio SOAP regolare è racchiuso nel pacchetto XOP e quindi questo messaggio XOP è racchiuso con MIME. Anche la raccomandazione del W3C utilizza i pacchetti MIME per XOP: W3C: XML-binary Optimized Packaging. Estratto da questo link:

Content-Type: Multipart/Related;boundary=... 

se cerco di chiamare il servizio Web utilizzando funzione "soapUI" (scritto in Java, disponibile da "www.soapui.org"), chiamata di servizio viene eseguito con successo e la risposta è analizzato senza alcun problema.

FYI, questo è un cross-post da MSDN WCF forum., Ma non ci sono ancora risposte.

Qualsiasi idea è apprezzato, grazie in anticipo,

Alex

+0

Sto affrontando lo stesso identico problema. Creare un binding personalizzato e impostare messageVersion = "Soap12" non ha funzionato per me. Una differenza che posso vedere è che la mia chiamata al servizio web è https ma questo post è per http sembra. –

+0

Hai trovato una soluzione? Sto avendo lo stesso problema. Ma la configurazione di associazione suggerita nella prima risposta non è valida per web.config. –

+0

HTTP vs HTTPS non fa alcuna differenza: questo è solo il dettaglio del trasporto. Il problema è la formattazione del messaggio.Il problema che avevo era che l'entità governativa stava usando un server Java (usando lo stack IBM WebSphere) e il loro stack stava producendo messaggi non conformi. C'erano due opzioni nel mio caso: 1.) usare SoapUI come app esterna che scaricherà il messaggio e quindi analizzare l'XML in C# 2). Modifica l'XML grezzo che passa attraverso la rete e cambia il messaggio XML per conformarsi agli standard -> questo tutto è stato fatto in C#. – alemarko

risposta

0

Provare a impostare la codifica dei messaggi nella configurazione legame messageEncoding="Mtom" e basicHTTPBinding invece di wsHTTP uno ...

Speranza che aiuta!

2

Sto anche utilizzando CXF e ho un client C#. Prova a modificare le impostazioni di binding, sostituisci textMessageEncoding con mtomMessageEncoding. Qualcosa del genere:

<binding name="yourSoapBinding"> 
    <mtomMessageEncoding messageVersion="Soap12"/> 
    <httpTransport /> 
</binding>