1.第九章 创建 Web Services - 查看 WSDL
2.深夜写完的源码代码——快速实现.NET(.net framework/.net core+)动态访问webservice服务
3.ç¨C#åç®åçWeb Service
第九章 创建 Web Services - 查看 WSDL
第九章内容概要:
在使用%SOAP.WebService定义 Web 服务时,系统会生成并发布描述该服务的解析 WSDL 文档。每当修改并重新编译 Web 服务时,源码系统会自动更新此 WSDL。解析微名片 asp源码此文档遵循通用接口标准,源码确保Web服务与客户端之间的解析capital函数源码互操作性,具体细节和差异可能因服务版本而异。源码
为方便访问,解析系统将生成的源码 WSDL 文档提供在特定 URL 上。但若 Web 应用程序需要密码身份验证或 SSL 连接,解析则直接通过 URL 访问可能不可行。源码此时,解析建议下载 WSDL 文件,源码雷霆出击源码并根据需要使用该文件。解析
值得注意的源码是,生成的jdb指标源码 WSDL 文档不包含运行时添加的 SOAP 标头信息。若要包括这些信息,可先下载 WSDL 文件,然后根据需要进行修改,vpphash源码分析再使用修改后的文件。
查看 WSDL 时,可以通过浏览器访问特定 URL。例如,URL 形式为 ponents = null;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// è¿æ¥å符串常é
const string szConn = "server=(local)\\taoyi;uid=sa;pwd=;"
+ "initial catalog=mydata;data source=taoyi";
[WebMethod]
public String About()
{
return "è¿æ¯ä¸ä¸ªC#ç¼åçWeb Serviceæ¼ç¤ºç¨åº!";
}
// è¿åå ¶ä¸ä¸ä¸ªWebServiceDemo表
[WebMethod]
public DataSet GetServiceDemoTable()
{
DataSet sqlDs = new DataSet();
DataAccess dataAcc = new DataAccess(szConn);
string szSql = "Select * From WebServiceDemo";
sqlDs = dataAcc.GetDataset(szSql,"Demo");
return sqlDs;
}
// è¿åç±ç¨æ·æå®çæ¥è¯¢
[WebMethod]
public DataSet GetByUser(string szCommandText)
{
DataSet sqlDs = new DataSet();
DataAccess dataAcc = new DataAccess(szConn);
sqlDs = dataAcc.GetDataset(szCommandText);
return sqlDs;
}
}
æ¯ä¸æ¯å¾ç®åå¦ï¼å°±åªè¿ä¹ç¹ï¼åµåµ~ï¼ä¸è¿ä¹å¯ä»¥è¯´æé®é¢çäºãè¿ä¸ªç±»ä¸å£°æäºä¸ä¸ªWEBæ¹æ³ï¼æ没æåè§å¢ï¼æ¯ä¸ªæ¹æ³çåé¢é½å äº[WebMethod]ï¼è¡¨ç¤ºè¯¥æ¹æ³ä¸ºWEBæ¹æ³ãåµåµï¼å¦æä½ æ³è¦ä½ åçå½æ°å¯ä»¥è®©WEBåºç¨ç¨åºè°ç¨çè¯ï¼è¿ä¸ªå¯ä¸è½å°çå¦~ï¼ä¸ç¶WEBåºç¨ç¨åºå°±æ æ³è°ç¨çã
å°æ¤ä¸ä¸ªWEBæå¡å°±å®æäºï¼ç¹å»è¿è¡ççï¼å¦æ没ä»ä¹éçè¯ï¼å°±ä¼åºç°å¦ä¸çWEB页é¢æå¡æè¿°ï¼
Service1
The following operations are supported. For a formal definition, please review the Service Description.
* GetByUser
* GetServiceDemoTable
* About
.....ï¼ä¸é¢è¿æå¾å¤ï¼
å ¶ä¸ä»£æå·çå°±æ¯å åå¨å½æ°åå äº[WebMethod]çå½æ°ãå¨åºç°å¨é¡µé¢ä¸ä½ å¯ä»¥åå»ç¸åºçå½æ°ï¼ç¶åå°±ä¼è·³å°è°ç¨é¡µé¢ï¼ä½ å¯ä»¥å¨ç¸åºçææ¬æ¡ä¸ï¼å¦æå½æ°æåæ°çè¯ï¼è¾å ¥ç¸åºçåæ°ï¼ç¹èè°ç¨æé®ï¼é£ä¹å°±å¯ä»¥çå°å½æ°è¿åçç»æäºï¼åææ¯å½æ°è°ç¨æ éçè¯ï¼ï¼ä¸è¿å ¨æ¯XMLæ ¼å¼çææ¬ãæ¯å¦æçGetServiceDemoTableå½æ°è°ç¨çç»æå¦ä¸ï¼
<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns=":xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
- <xs:complexType>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="Demo">
- <xs:complexType>
- <xs:sequence>
<xs:element name="ID" type="xs:int" minOccurs="0" />
<xs:element name="szUser" type="xs:string" minOccurs="0" />
<xs:element name="szSex" type="xs:string" minOccurs="0" />
<xs:element name="szAddr" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Demo diffgr:id="Demo1" msdata:rowOrder="0">
<ID>1</ID>
<szUser>taoyi</szUser>
<szSex>ç·</szSex>
<szAddr>åå·æ³¸å·</szAddr>
</Demo>
- <Demo diffgr:id="Demo2" msdata:rowOrder="1">
<ID>2</ID>
<szUser>xiner</szUser>
<szSex>女</szSex>
<szAddr>åå·å®å®¾</szAddr>
</Demo>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
å°æ¤ä¸ºè³ï¼Web Serviceç¨åºå°±å·²ç»ç®æ¯å®æäºã
ä¸é¢è¦åçæ¯åä¸ä¸ªWEBåºç¨ç¨åºæ¥æµè¯æåçè¿ä¸ªWeb Serviceäºï¼ççè½ä¸è½è¾¾å°æ³è¦çç»æã建ç«Webåºç¨ç¨åºçæ¥éª¤å¦ä¸ï¼
ä¸ãæ°å»ºä¸ä¸ªASP.Net Web Applicationå·¥ç¨ï¼ä¸å建Web Serviceç第ä¸æ¥ä¸æ ·ï¼åªæ¯å·¥ç¨ç±»åä¸ä¸æ ·ç½¢äºãæè¿éå·¥ç¨å为WebServiceDemoTest,å®æ´ç为pub\wwwroot\WebserviceDemoTest)ä¸çæäºæéæ件ã
äºãå¨è®¾è®¡è§å¾ä¸æå¼WebForm1.aspxæ件ï¼å¨éé¢æ¾ç½®ä¸ä¸ªpanel容å¨ï¼ä¸ºäºè¾¾å°æµè¯çç®çï¼æ们éè¦ä¸ä¸ªæå¡ç«¯æé®åä¸ä¸ªæå¡ç«¯ææ¬æ¡ï¼åå«è°ç¨æ们å¨Web Serviceä¸åçä¸ä¸ªå½æ°ï¼å¦å¤ï¼ä¸ºäºå±ç¤ºè°ç¨æ¹æ³æå¾è¾¾çæ°æ®ï¼è¿éè¦ä¸ä¸ªæå¡ç«¯æ ç¾æ§ä»¶åä¸ä¸ªDataGridæ§ä»¶ã页é¢çå¸ç½®å°±éä¾¿ä½ äºï¼æ³æä¹æ¾ç½®å°±æä¹æ¾ç½®ï¼åªè¦è½è¾¾å°æ¼ç¤ºçç®çå°±è¡ã
ä¸ãå¼ç¨å ååçWeb Serviceç¨åºï¼èåæ¥éª¤å¦ä¸project->add web reference...ï¼ç¶åè¾å ¥æ们Web Serviceçè·¯å¾ï¼è¿éæ¯http://localhost/WebServiceDemo/Service1.asmxï¼ç¹å»æ·»å å°±OKäºãè¿æ¶ä½ å°å¨ç±»è§å¾ä¸çå°localhostå½å空é´äºã
åãç¼åæµè¯ä»£ç ã
为äºä¾¿äºåé¢å°åäºä»£ç ï¼å¦ï¼xxxx.xxxx.xx xx = new xxxx.xxx.xx()è¿ç§ï¼ï¼é£ä¹é¦å ä½ å¾å¼ç¨localhostå½å空é´çservice1ç±»ï¼ä»¥åç´æ¥åxxxx xx = new xxxx()å°±å¯ä»¥äºã
ä¸é¢æ¯å 个æé®ç代ç ï¼
// æµè¯GetServiceDemoTable()
private void Button2_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
Service1 oService = new localhost.Service1();
// è¿åè®°å½é
ds = oService.GetServiceDemoTable();
if (ds != null)
{
// æ¾ç¤ºè®°å½éçè®°å½
DataGrid1.DataSource = ds.Tables["Demo"];
DataGrid1.DataBind();
}
else
{
this.Response.Write("å è½½æ°æ®é误!");
}
}
// æµè¯GetByUser()
private void Button1_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
Service1 oService = new localhost.Service1();
String szCommand = TextBox1.Text;
ds = oService.GetByUser(szCommand);
if (ds != null)
{
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}
else
Response.Write("é误!æå¯è½æ¯SQLå½ä»¤æé®é¢!");
}
// æµè¯About()
private void Button3_Click(object sender, System.EventArgs e)
{
Service1 oService = new localhost.Service1();
Label1.Text = oService.About();
}
OKï¼æåå°±æ¯è¿è¡äºï¼å¦æä¸åOKï¼ç¹å»ç¬¬ä¸ä¸ªæé®å¾å°çå°æ¯å¨ä¸ä¸ªå å½ç¨æ·æ§è¡çSQLå½ä»¤ç表ç»æã第äºä¸ªæé®å¾å°çå°±æ¯ä¸é¢è¿è¡Web Serviceæ¶çGetServiceDemoTableå¾å°çXMLæè¿°ï¼å³
ID szUser szSex szAddr
1 taoyi ç· åå·æ³¸å·
2 xiner 女 åå·å®å®¾
ç¹å»ç¬¬ä¸ä¸ªæé®ï¼åå¨Label1ä¸æ¾ç¤º"è¿æ¯ä¸ä¸ªC#ç¼åçWeb Serviceæ¼ç¤ºç¨åº!âçå符串ã