Visual Studio 2022 新建WebService项目
创建之后启动运行
设置默认文档即可
经过上面的创建WebService已经创建完成,添加HelloWorld3方法,
[WebMethod]
public string HelloWorld3(int a, string b)
{
//var s = a + b;
return $"Hello World a+b={a + b}";
}
属性页面如下:
地址加上?wsdl----http://localhost:8012/WebService1.asmx?wsdl 可以查看具体方法,我们点开一个方法,查看具体调用方式,
http://localhost:8012/WebService1.asmx?op=HelloWorld3
下面使用 SOAP1.1 SOAP1.12 HTTP PSOT方式调用WebService,代码如下
- #region 测试 SOAP1.1 SOAP1.12 HTTP PSOT方式调用WebService 调用
- ///
- /// WebService SOAP1.1方法调用
- ///
- /// 调用方法所需参数
- public static string WebServiceSOAP11(int a, string b)
- {
- //http://localhost:8012/WebService1.asmx/HelloWorld3
- #region HTTP POST 请求和响应示例
- #region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值
- //SOAP 1.1
- //以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。
- //请求
- //POST /WebService1.asmx HTTP/1.1
- //Host: localhost
- //Content-Type: text/xml; charset=utf-8
- //Content-Length: length替换
- //SOAPAction: "http://tempuri.org/HelloWorld3"
-
- //
- //
- //
- //
- // int替换
- // string替换
- //
- //
- //
-
- //响应
- //HTTP/1.1 200 OK
- //Content-Type: text/xml; charset=utf-8
- //Content-Length: length
-
- //
- //
- //
- //
- //
string - //
- //
- //
- #endregion
-
- HttpWebRequest httpWebRequest = null;
- string result = null;
- var webserviceurl = "http://localhost:8012/WebService1.asmx" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");
- httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);
- //注意SOAP1.1 ContentType,需要SOAPAction,Content-Type: text/xml; charset=utf-8
- httpWebRequest.ContentType = "text/xml; charset=utf-8";
- httpWebRequest.Method = "post";
- httpWebRequest.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld3");
-
- Stream requestStream = httpWebRequest.GetRequestStream();
- StreamWriter streamWriter = new StreamWriter(requestStream);
- streamWriter.Write($"\r\n
\r\n\r\n\r\n{a}\r\n{b}\r\n \r\n \r\n "); - streamWriter.Close();
- requestStream.Close();
-
- //byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");
- //requestStream.Write(vs, 0, vs.Length);
- httpWebRequest.ContentLength = vs.Length;
- //requestStream.Close();
-
- Stream responseStream = null;
- StreamReader reader = null;
- HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
- try
- {
- if (webResponse.StatusCode == HttpStatusCode.OK)
- {
- //返回值类型 Content-Type: text/xml; charset=utf-8
- //StreamReader reader = new StreamReader(webResponse.GetResponseStream());
- responseStream = webResponse.GetResponseStream();
- reader = new StreamReader(responseStream);
- result = reader.ReadToEnd();
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(result);
- result = xmlDocument.InnerText;
- }
- }
- catch (Exception ex)
- {
- result = $"查询出错,原因:{ex}";
- }
- finally
- {
- reader.Close();
- webResponse.Close();
- responseStream.Close();
- httpWebRequest.Abort();
- }
- return result;
- //if (!string.IsNullOrEmpty(result))
- //{
- // System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()
- //}
- #endregion
- }
-
- ///
- /// WebService SOAP1.2方法调用
- ///
- /// 调用方法所需参数
- public static string WebServiceSOAP12(int a, string b)
- {
- //http://localhost:8012/WebService1.asmx/HelloWorld3
- #region HTTP POST 请求和响应示例
- #region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值
- //SOAP 1.2
- //以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。
-
- //POST /WebService1.asmx HTTP/1.1
- //Host: localhost
- //Content-Type: application/soap+xml; charset=utf-8
- //Content-Length: length
-
- //
- //
- //
- //
- // int
- // string
- //
- //
- //
- //HTTP/1.1 200 OK
- //Content-Type: application/soap+xml; charset=utf-8
- //Content-Length: length
-
- //
- //
- //
- //
- //
string - //
- //
- //
- #endregion
-
- HttpWebRequest httpWebRequest = null;
- string result = null;
- var webserviceurl = "http://localhost:8012/WebService1.asmx" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");
- httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);
- //注意与SOAP1.1 区分 ContentType,不需要SOAPAction,Content-Type: application/soap+xml; charset=utf-8
- httpWebRequest.ContentType = "application/soap+xml; charset=utf-8";
- httpWebRequest.Method = "post";
- //不需要了 httpWebRequest.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld3");
-
- Stream requestStream = httpWebRequest.GetRequestStream();
- StreamWriter streamWriter = new StreamWriter(requestStream);
- streamWriter.Write($"\r\n
\r\n\r\n\r\n{a}\r\n{b}\r\n \r\n \r\n "); - streamWriter.Close();
- requestStream.Close();
-
- //byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");
- //requestStream.Write(vs, 0, vs.Length);
- httpWebRequest.ContentLength = vs.Length;
- //requestStream.Close();
-
- Stream responseStream = null;
- StreamReader reader = null;
- HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
- try
- {
- if (webResponse.StatusCode == HttpStatusCode.OK)
- {
- //返回值类型 Content-Type: application/soap+xml; charset=utf-8
- //StreamReader reader = new StreamReader(webResponse.GetResponseStream());
- responseStream = webResponse.GetResponseStream();
- reader = new StreamReader(responseStream);
- result = reader.ReadToEnd();
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(result);
- result = xmlDocument.InnerText;
- }
- }
- catch (Exception ex)
- {
- result = $"查询出错,原因:{ex}";
- }
- finally
- {
- reader.Close();
- webResponse.Close();
- responseStream.Close();
- httpWebRequest.Abort();
- }
- return result;
- //if (!string.IsNullOrEmpty(result))
- //{
- // System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()
- //}
- #endregion
- }
-
- ///
- /// WebService HTTP方法调用
- ///
- /// 调用方法所需参数
- public static string WebServiceHTTP(string xmldata)
- {
- //http://localhost:8012/WebService1.asmx/HelloWorld3
- #region HTTP POST 请求和响应示例
- #region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值
- //以下是 HTTP POST 请求和响应示例。所显示的占位符需替换为实际值。
- // POST /WebService1.asmx/HelloWorld3 HTTP/1.1
- // Host: localhost
- // Content-Type: application/x-www-form-urlencoded
- // Content-Length: length替换
- // a=string替换&b=string替换
-
- // HTTP/1.1 200 OK
- // Content-Type: text/xml; charset=utf-8
- // Content-Length: length
-
- //
- //
string - #endregion
-
- HttpWebRequest httpWebRequest = null;
- string result = null;
- var webserviceurl = "http://localhost:8012/WebService1.asmx/HelloWorld3" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");
- httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);
- //注意与SOAP1.1,SOAP1.2 区分 ContentType,不需要SOAPAction,Content-Type: application/x-www-form-urlencoded
- httpWebRequest.ContentType = "application/x-www-form-urlencoded";
- httpWebRequest.Method = "post";
-
- Stream requestStream = httpWebRequest.GetRequestStream();
- StreamWriter streamWriter = new StreamWriter(requestStream);
- streamWriter.Write(xmldata);
- streamWriter.Close();
- requestStream.Close();
-
- //byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");
- //requestStream.Write(vs, 0, vs.Length);
- httpWebRequest.ContentLength = vs.Length;
- //requestStream.Close();
-
- Stream responseStream = null;
- StreamReader reader = null;
- HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
- try
- {
- if (webResponse.StatusCode == HttpStatusCode.OK)
- {
- //返回值类型 Content-Type: text/xml; charset=utf-8
- //StreamReader reader = new StreamReader(webResponse.GetResponseStream());
- responseStream = webResponse.GetResponseStream();
- reader = new StreamReader(responseStream);
- result = reader.ReadToEnd();
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(result);
- result = xmlDocument.InnerText;
- }
- }
- catch (Exception ex)
- {
- result = $"查询出错,原因:{ex}";
- }
- finally
- {
- reader.Close();
- webResponse.Close();
- responseStream.Close();
- httpWebRequest.Abort();
- }
- return result;
- //if (!string.IsNullOrEmpty(result))
- //{
- // System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()
- //}
- #endregion
- }
- #endregion
使用代码
- string aa = WebServiceSOAP11(4, "888");
- Console.WriteLine($"WebService--SOAP1.1-- 返回值:{aa}");
- aa = WebServiceSOAP11(6, "0000");
- Console.WriteLine($"WebService--SOAP1.2-- 返回值:{aa}");
- aa = WebServiceHTTP("a=666666&b=8888");//注意参数名称不一致会报错,a,b
- Console.WriteLine($"WebService--http-- 返回值:{aa}");
运行效果