如何在c#中没有http头的情况下处理SOAP / XML请求?

时间:2017-03-16 17:09:16

标签: c# .net xml soap

我需要为SOAP服务主机创建一个解决方案,其中请求客户端会根据他的请求发送一个http-header(Wireshark显示客户端打开TCP / IP连接并发送如下所示的纯XML数据。 / p>

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns=...
...
</Envelope>

根据我的理解,XML-Header之前应该有一个httpheader。由于公司无法/不愿意解决这个问题,我需要找到一种解决方法来解析数据(已经有一个脏的解决方案)并“正确”响应客户端知道请求已被处理。 现在我正在使用C#.Net 3.5中的ServiceHost类

有没有更好的解决方案,然后手动尝试组装响应包?

修改
当我向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>

另一个客户端只向我的servicehost发送一个soap请求,没有任何http头:

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns=...
...
</Envelope>

另外,我认为我混淆了html和http。在帖子中更改了它。

1 个答案:

答案 0 :(得分:0)

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

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