WebService是什么?它的作用?
WebService是一个平台独立、低耦合的、自包含的、基于可编程的可使用xml描述、调用的web应用程序,用于开发分布式的交互式的应用程序。
Soap是什么?它的作用?
Simple Object Access Protocol(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、基于xml的协议,用于web应用程序之间交换信息或数据交互的结构化或固化的信息。
如何创建基于Soap协议的WebService?
1、创建一个基于SoapHeader类的头部信息类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Header : SoapHeader
2 {
3 private string _code = string.Empty;
4 private string _token = string.Empty;
5
6 public string Code
7 {
8 get
9 {
10 return _code;
11 }
12
13 set
14 {
15 _code = value;
16 }
17 }
18
19 public string Token
20 {
21 get
22 {
23 return _token;
24 }
25
26 set
27 {
28 _token = value;
29 }
30 }
31
32 public Header()
33 {
34
35 }
36
37 public Header(string r_code, string r_token)
38 {
39 this._code = r_code;
40 this._token = r_token;
41 }
42 }
2、声明类&创建验证方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public Header header = new Header();
2
3 string code = "simoje";
4 string token = "helloworld";
5
6 private bool ValidateToken(string _code, string _token)
7 {
8 if (header.Code == code && header.Token == token)
9 {
10 return true;
11 }
12 else
13 {
14 return false;
15 }
16 }
3、创建成员方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [SoapHeader("header")]
2 [WebMethod]
3 public string HelloWorld(string para)
4 {
5 // do some things
6 }
注:SoapHeader括号中是声明的类实例名
如何使用Soap协议调用WebService?
1、引用WebService,取名为hello_service
2、声明Header类,并传入code与token
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 hello_service.Header header = new hello_service.Header();
2 validate.Code = "simoje";
3 validate.Token = "hello_world";
3、调用HelloWorld方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 hello_service.Simoje_APISoapClient api = new hello_service.Simoje_APISoapClient();
2
3 JObject jo = new JObject(
4 new JProperty("para", "some paras"));
5
6
7 api.HelloWorld(header, jo.ToString());
注:JObject为newtonsoft.dll封装的json类,可在http://www.cnblogs.com/simoje/p/4766215.html得到。