加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService传输数据流及数据交互解析

发布时间:2020-12-17 02:35:06 所属栏目:安全 来源:网络整理
导读:key words:DPWS,嵌入式设备,WebService,Http,嗅探,Micro Framework。。 为了实现一个嵌入式设备和一个host在IIS server上面的WebService交互,使用了MF3.0里面的DPWS方法。不过这个东西实在是Hard to use。今天就记录下使用的过程中的第一步,首先分析

key words:DPWS,嵌入式设备,WebService,Http,嗅探,Micro Framework。。

为了实现一个嵌入式设备和一个host在IIS server上面的WebService交互,使用了MF3.0里面的DPWS方法。不过这个东西实在是Hard to use。今天就记录下使用的过程中的第一步,首先分析一个Client和一个Webservice是如何交互的,发送的数据流的格式,然后在Device里面封装一下Soap头用httpClient发送出去。

这里用到了WireShark来分析网络交互的数据包。

首先定义一个运行在IIS上面的简单的WebService:

namespace Cashfree.Vending.Web.WebService
{
????[WebService(Namespace = "http://tempuri.org/")]
??? [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
??? [System.ComponentModel.ToolboxItem(false)]
??? public class IISWS : System.Web.Services.WebService
??? {

??????? [WebMethod]
??????? public string HelloWorld()
??????? {
??????????? return "Hello Robin";
??????? }

??????? [WebMethod]
??????? public int add(int a,int b)
??????? {
??????????? return a + b;
??????? }
??? }
}

然后定义一个Client来访问这个Webservice:

namespace Cashfree.Vending.IISWSInvoke
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? ISWSSoapClient isClient = new ISWSSoapClient();???????????
??????????? Console.WriteLine(isClient.add(2,3));
??????? }
??? }
}

接着,发布好Webservice之后,编译Client文件,然后找到Client的exe文件。

这个时候打开WireShark,监视网卡上面发送的数据流,设置过滤,格式如下:

(ip.addr eq 10.10.20.33 and ip.addr eq 192.168.0.100) and (tcp.port eq 1795 and tcp.port eq 8088)

双击Client端访问IIS上面的Webservice,然后得到下面的一个数据包列表:

clip_image002

这就得到了一个完整的交互过程,从下往上,最左边的一列是frame id。

我把着几个frame,199到122解析出来得到了下面的格式:

image

首先是客户端发送一个请求到iis的服务器上面,请求的地址是:/WebService/IISWS.asmx,这里是支持http1.1的。

然后连接类型是一直保持连接。

image

?

这是Server回的一个ACK到Client来保持连接。同时标识连接通了。

image

然后Client端开始发送请求调用IIS上面的服务了,传递了两个参数:

a=2,b=3;

封装之后,有一个头部和一个body。Envelope在MF2.5的时候,有类库直接对应SOAP的头和Body。3.0的时候找XMLDocument找了N久没找到,MDSN上面明明写的是有的。但是这个地方如果使用MF来解析的话,可以调用XMLReader来实现。只不过比较麻烦,只是提供了最基础的XML访问的方法,需要一个节点一个节点的找。

image

服务器端首先回一个ACK,然后跟着一个XMl文件表示调用的结果:

<addResult>5</addResult>

这里,俺们知道了传输的数据格式之后,就可以把Soap message封装好了之后直接传输给Server了。

Thursday,January 08,2009

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读