я написал ФОС C# клиент, который потребляет Java WebService:Как клиент WCF может использовать многопользовательский ответ java webservice?
var client = new abcClient("abc");
var response = client.AbcTransaction(msg);
В WCF связывания информации из web.config является:
<customBinding>
<binding name="abcSOAP">
<textMessageEncoding messageVersion="Soap12" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
Это выглядит довольно прямо вперед, вправо ? ... И действительно, SoapFaults легко потреблять:
HTTP/1.1 500 Internal Server Error
Content-Length: 783
Content-Type: application/soap+xml;charset=UTF-8
Server: Microsoft-IIS/8.0
Date: Mon, 18 Nov 2013 14:06:18 GMT
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body><soap:Fault>...
Однако вебсервис посылает «обычные» ответы в многочастного/связанного типа содержимого:
HTTP/1.1 200 OK
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:c79210c3-bbef-4aa3-82ae-6a20c7a96564"; start="<[email protected]>"; start-info="application/soap+xml"
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
Date: Mon, 18 Nov 2013 14:11:25 GMT
Content-Length: 658
--uuid:c79210c3-bbef-4aa3-82ae-6a20c7a96564
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml";
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">...
Это приводит к ProtocolException в клиенте WCF, потому что WCF-клиент не ожидает ответ на многочастный/связанный ответ. Сообщение ProtocolException является (на немецком языке):
Der Inhaltstyp "многочастный/связанные, типа =" приложение/ХОРЫ + XML "; границы =" UUID: ead716a3-4b8b-4207-ad66-b9f18ae368b2" ; start = ""; start-info = "application/soap + xml" "der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung (application/soap + xml; charset = utf-8) überein. Wenn Sie einen benutzerdefinierten Encoder verwenden, sollten Sie sicherstellen, dass die IsContentTypeSupported-Methode korrekt Implementiert ist. Die Ersten 1024 Bytes дер Antwort Варен: ...
На английском языке:
Тип содержимого "многочастному/связанные, тип =" приложения/ХОР + XML "; граница =" UUID: ead716a3-4b8b-4207-ad66-b9f18ae368b2 "; start =" "; start-info =" application/soap + xml "" ответного сообщения не соответствует типу содержимого привязки (application/soap + xml ; charset = utf-8). Если вы используете пользовательский кодер, убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 1024 байт ответа были: ...
Кто-нибудь есть идея, как я могу потреблять это многослойное/сообщение, связанное с клиентом WCF (без использования класса HttpWebRequest)? Есть ли какая-либо конфигурация для этого szenario?
Вы пытались переключиться с 'text' на' Mtom' для кодирования SOAP-сообщений? Config: ''/Code: 'binding.MessageEncoding = WSMessageEncoding.Mtom;' –
MaxSC
Да, похоже, это ничего не меняет. (Я добавлю информацию привязки к моему вопросу) – chanser