웹 서비스를 호출하는 데 필요한 Silverlight 클라이언트가 있습니다. 웹 서비스는 Java로 작성되었으며 XOP 인코딩을 사용하여 이진 메시지를 일부 호출에 첨부합니다. 그러나 Silverlight 서비스는 이진 인코딩을 포함하지 않는 호출 만 사용합니다. 그러나 웹 서비스를 제어 할 수 없기 때문에 XOP 멀티 파트 메시지 (아래 예는 하나의 예)를 처리해야합니다. 웹 서비스에서Silverlight 3의 WS Response에서 XOP Gunk를 제거하십시오.
예 응답
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:890535d9-d11f-4dfb-8393-789e20ea8064"; start="<[email protected]>"; start-info="text/xml"
Date: Thu, 27 Jan 2011 22:03:09 GMT
Content-Length: 47247
--uuid:890535d9-d11f-4dfb-8393-789e20ea8064
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
Content-Transfer-Encoding: binary
Content-ID: <[email protected]>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:Response xmlns:ns2="http://tempuri.com/"></ns2:Response>
</soap:Body>
</soap:Envelope>
--uuid:890535d9-d11f-4dfb-8393-789e20ea8064--
우리의 현재 구현 수동 문자열 치환을 이용하여 SOAP 메시지를 생성하고 상기 요청을 게시하고 문자열로 응답을 다운로드 웹 클라이언트 클래스를 사용하여 (데이터 아웃 박리). 그런 다음 XML로 데이터를 수동으로 파싱해야합니다. 괜찮습니다.하지만 다소 어려워서 REST 서비스를 사용할 수 있습니다. 서비스 프록시가 객체로 응답하고 싶습니다.
WS Stack이 SOAP을 deserialize하려고 시도하고 XOP gunk를 제거하기 전에 메시지를 가로채는 사용자 정의 동작을 구현하고 싶습니다. 그러나 지금까지는 제가 할 수있는 것을 찾지 못했습니다 그런 것.
자바 서비스에 요청을 다시 제출하는 서버에 프록시 서비스를 (I 제어 것을) 만들고 실제로 XOP를 처리 할 수
내가 볼때, 나는 몇 가지 옵션이 . 이 옵션은 성능에 영향을 미치므로 피하고 싶습니다.
XOP를 처리 할 사용자 지정 MessageEncodingBindingElement, MessageEncoderFactory 및 MessageEncoder를 구현합니다. 이 옵션은 처음에는 최상으로 보이지만 TextMessageEncoderFactory 또는 TextMessageEncoder (내부 클래스)를 확장 할 수 없기 때문에 기본적으로 처음부터 전체 메시지 인코딩을 다시 작성해야합니다 (Microsoft! 대단히 감사합니다!).
그대로 두십시오.
표시되지 않는 옵션이 있습니까?