如何在c#中处理没有http头的SOAP/XML请求?
问题描述:
我需要为SOAP服务主机创建一个解决方案,其中请求客户端发送一个包含他的请求的http标头(Wireshark显示客户端打开TCP/IP连接并发送如下所示的纯XML数据)如何在c#中处理没有http头的SOAP/XML请求?
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns=...
...
</Envelope>
据我的理解,在XML-Header之前应该有一个httpheader,由于该公司无法/不愿意解决这个问题,我需要找到解决方法来解析数据(已经有一个肮脏的解决方案)并且“正确地”响应客户端知道请求已被处理 现在我在C#.Net 3.5中使用ServiceHost类
Is there一个更好的解决方案,然后手动尝试组装一个响应包?
编辑
当我发送到Web服务,它看起来像以下(从Wireshark的提取)
POST /WS_DC/WS_DC.asmx HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.5485)
VsDebuggerCausalityData: ....
Content-Type: text/xml; charset=utf-8
SOAPAction: "*removed*"
Host: 192.168.77.125:8080
Content-Length: 400
Expect: 100-continue
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://...
...
</soap:Envelope>
其他客户端只发送SOAP请求,我的ServiceHost没有任何HTTP请求标题:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns=...
...
</Envelope>
此外,我想我混合了HTML和HTTP。在帖子中改变了它。
答
我解决了编写我自己的简约SOAP客户端的问题。
的TCPListener 8080, 解析XML, 构建我自己的HTTP标头+ XML响应 发回过的TcpClient。
你在说什么HTTP标头? SOAP信息作为信封中的SOAP标题传递。 –
当我做了一个肥皂请求,它看起来像:POST /WS_DC/WS_DC.asmx HTTP/1.1 用户代理:Mozilla/4.0(兼容; MSIE 6.0; MS Web服务客户端协议2.0.50727.5485)... – Hydralisk
这是仍然很不清楚。您能否通过提供两个示例代码向我们展示它们的区别:一个HTML和一个XML? – zx485