2017-03-16 37 views
0

我需要为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。在帖子中改变了它。

+0

你在说什么HTTP标头? SOAP信息作为信封中的SOAP标题传递。 –

+0

当我做了一个肥皂请求,它看起来像:POST /WS_DC/WS_DC.asmx HTTP/1.1 用户代理:Mozilla/4.0(兼容; MSIE 6.0; MS Web服务客户端协议2.0.50727.5485)... – Hydralisk

+0

这是仍然很不清楚。您能否通过提供两个示例代码向我们展示它们的区别:一个HTML和一个XML? – zx485

回答

0

我解决了编写我自己的简约SOAP客户端的问题。

的TCPListener 8080, 解析XML, 构建我自己的HTTP标头+ XML响应 发回过的TcpClient。