首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Silverlight 3中从WS响应中删除XOP g

在Silverlight 3中从WS响应中删除XOP g
EN

Stack Overflow用户
提问于 2011-01-27 22:53:47
回答 1查看 304关注 0票数 0

我有一个Silverlight客户端,我需要调用一个web服务。web服务是用Java构建的,并使用XOP编码将二进制消息附加到它的一些调用中。但是,Silverlight服务只使用不包含任何二进制编码的调用。但是,由于我无法控制web服务,所以我仍然必须处理XOP多部分消息(下面是一个例子)。

web服务的响应示例(除去数据)

代码语言:javascript
复制
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="<root.message@cxf.apache.org>"; 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: <root.message@cxf.apache.org>

<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消息,并使用WebClient类发布请求并以字符串的形式下载响应。然后,我们将手动将数据解析为XML。这是可以的,但这有点困难,而且无论如何我们都有REST服务可供使用;我非常希望服务代理能够使用对象进行响应。

我真正想要做的是实现一个自定义行为,在WS堆栈试图反序列化SOAP并删除XOP g之前拦截消息,但到目前为止,我还没有发现允许我这样做的任何事情。

在我看来,我有几个选择:

  1. 在服务器(我控制的服务器)上创建一个代理服务,它将将请求重新提交给
  2. 服务,并能够实际处理XOP。此选项对性能有影响,因此我希望avoid.
  3. Implement一个将处理XOP的自定义MessageEncodingBindingElement、MessageEncoderFactory和MessageEncoder。这个选项一开始似乎是最好的,但是由于我不能扩展TextMessageEncoderFactory或TextMessageEncoder (它们是内部类),我基本上需要从头开始重写整个消息编码(非常感谢您这样做。

有什么我看不到的选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-04 16:23:39

不,没有其他选择了。

我决定使用WebClient.DownloadString()方法实现一个传递式的ashx代理,然后解析出SOAP并将其插入响应中。它应该足够灵活,最重要的是,我可以使用来自Silverlight的自动生成的代理类,然后让端点使用我的ashx代理--这使得维护变得更加简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4822909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档