成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>開發編程>>VS.NET>>新聞內容
用VS.NET 2003開發和調用Web Service實例
作者:本站原創 icech 發布時間:2004-6-30 11:34:50 文章來源:西部E網

  “MS.NET平臺內建了對Web Service的支持,包括Web Service的構建和使用。與其它開發平臺不同,使用.NET平臺,你不需要其他的工具或者SDK就可以完成Web Service的開發了。.NET Framework本身就全面支持Web Service,包括服務器端的請求處理器和對客戶端發送和接受SOAP消息的支持”(前面這句話是icech借用別人的)。本文將一步一步帶你用Microsoft Visual Studio .NET 2003(后面簡稱VS.Net 2003)創建和使用一個簡單的Web Service。

   1、用VS.Net 2003創建一個最簡單的Web Service

  首先,打開VS.Net 2003, 按Ctrl+Shift+N(或者打開“文件-新建-項目”),選擇“ASP.NET Web服務”。生成WebService默認文件是Service1.asmx。

 
(圖1)

  查看Service1.asmx.cs代碼,你會發現VS.Net 2003已經為Web Service文件建立了缺省的框架。原始代碼為:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace WebService1
{
///


/// Service1 的摘要說明。
///

public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: 該調用是 ASP.NET Web 服務設計器所必需的
InitializeComponent();
}

#region 組件設計器生成的代碼

//Web 服務設計器所必需的
private IContainer components = null;

///


/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
///

private void InitializeComponent()
{
}

///


/// 清理所有正在使用的資源。
///

protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}

#endregion

// WEB 服務示例
// HelloWorld() 示例服務返回字符串 Hello World
// 若要生成,請取消注釋下列行,然后保存并生成項目
// 若要測試此 Web 服務,請按 F5 鍵

// [WebMethod]
// public string HelloWorld()
// {
// return "Hello World";
// }
}
}

(代碼1)

  直接使用“WEB 服務示例”,我們先看一下最簡單的Web Service是什么樣子的。去掉53~58行的注釋后(如代碼2),直接按F5編譯查看效果。

[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
(代碼2)

點擊顯示頁面(如圖2)中的“HelloWorld”超鏈接,跳轉到下一頁面(如圖3)

(圖2)


(圖3)

  再點擊“調用”按鈕,就可以看到用XML格式返回的Web Service結果(如圖4)。說明我們的Web Service環境沒有問題,而且還初步接觸了一下最簡單的Web Service。

 
(圖4)

  2、創建一個簡單帶有功能的Web Service

  網上有很多例子都是計算a+b=sum和顯示問候語的,所以我們也來練習一下。我們建立一個整數加法和顯示西部E網問候語的Web Service的例子,然后我們在下一節練習如何調用它。

  另外:WebMethod和WebService都有一個Description屬性,功能就是描述一下服務功能,具體方法可見:
   [WebMethod(Description="計算a+b=sum的功能")]和
   [WebService (Namespace="http://www.wsalc.com", Description = "<font color='#FF0000'><b>用 VS.NET 開發一個 Web Service 實例< /b></font>")]

[WebMethod(Description="計算a+b=sum的功能")]
public int Add(int a,int b)
{
return a+b;
}

[WebMethod(Description="顯示問候語的功能")]
public string Show(string yourname)
{
return "西部E網 www.wsalc.com"+"歡迎"+yourname;
}

(代碼3)

  運行后顯示的結果如圖5,具體的操作和測試方式就不細說了,和上面的HelloWorld差不多。如果測試正確性,可以輸入“http://localhost/WebService1/Service1.asmx/Show?yourname=icech”或者“http://localhost/WebService1/Service1.asmx/Add?a=3&b=6”(如圖6)。

(圖5)


(圖6)

  3、用ASP調用Web Service

  如果要用ASP來調用WevService,就一定要使用SOAP Toolkit或者XMLHTTP, 使用SOAP Client需要專門安裝SOAP Toolkit,這對客戶端來說不具有通用性,因此我們就學習使用XML來進行對WebService的調用。

<%
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://localhost/WebService1/Service1.asmx/Add"
'設置參數和值
strRequest = "a=5&b=6"
objHTTP.Open "POST", strWebserviceURL, False
'設置Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(strRequest)
bOK = xmlDOC.load(objHTTP.responseXML)
'查看狀態值
if objHTTP.Status=200 then
xmlStr = xmlDOC.xml
xmlStr = Replace(xmlStr,"&lt;","<",1,-1,1)
xmlStr = Replace(xmlStr,"&gt;",">",1,-1,1)
Response.Write xmlStr
else
Response.Write objHTTP.Statu&"<br>"
Response.Write objHTTP.StatusText
end if
%>
(代碼4)

  注意:代碼中的“http://localhost/WebService1/Service1.asmx/Add”是在第2節中其中“計算a+b=sum功能”的Web Service地址。

  以上代碼在本地測試都沒有問題(在部署webservice的本地機器上測試的),然而把strWebserviceURL = "http://localhost/WebService1/Service1.asmx/Add"改為部署在其他機器上的WebService時,卻出了問題,結果一直是返回500錯誤,即objHTTP.Status一直都為500。
  原因在于.Net Framework1.1默認不支持HttpGet和HttpPost。如果修改webservice里的web.config增加上代碼5后,上代碼就可以調用遠程機器上的WebService了。

<webServices>
   <protocols>
     <add name="HttpPost"/>
     <add name="HttpGet"/>
   </protocols>
</webServices>
(代碼5)

  4、用VBScript調用Web Service

  大家都清楚,其實VB、ASP、VBScript的語法和代碼都及其相似,其實寫出來他們其中任何一個都能出來另外幾個。

<script language="vbscript">
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://icech/WebService1/Service1.asmx/Add"
'設置參數和值
strRequest = "a=2&b=3"
objHTTP.Open "POST", strWebserviceURL, False
'設置Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(strRequest)
bOK = xmlDOC.load(objHTTP.responseXML)
'查看狀態值,這里是用MsgBox的方式顯示的,你可以根據
'自己的需要用其他方式顯示
msgBox objHTTP.Status
msgbox objHTTP.StatusText
'objHTTP.Status=200,這里就可以處理返回的xml片段了
'如果需要,可以替換返回的xml字符串當中的&lt;和&gt;
xmlStr = xmlDOC.xml
xmlStr = Replace(xmlStr,"&lt;","<",1,-1,1)
xmlStr = Replace(xmlStr,"&gt;",">",1,-1,1)
msgbox xmlStr
</script>
(代碼6)

  5、用ASP.Net調用Web Service

  在VS.Net 2003中新建窗體(我這里使用的C#),我這里的文件是WebForm1.aspx,編輯WebForm1.aspx.cs代碼。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebService1
{
///


/// WebForm1 的摘要說明。
///

public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
int a=5;
int b=6;
Service1 AddNum=new Service1();
string sum=AddNum.Add(a,b).ToString();
Response.Write("SUM="+sum);
}

#region Web 窗體設計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///


/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
///

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}

(代碼7)

  這些都是最基本最常見的一些測試,網上有很多,icech只是進行了整理,希望對初學的朋友能夠有所幫助。我的網站地址是http://www.wsalc.com/,論壇地址是http://bbs.weste.net/

  后面我還會繼續對Web Service進行一些學習,主要是針對數據庫和更加復雜和實用的一些功能,希望大家能夠喜歡。


最新更新
·C#中使用Split分隔字符串的技
·VS2008開發中Windows Mobile
·PC機和移動設備上絕對路徑的
·C#程序加殼的方法(使用Sixx
·當前上下文中不存在名稱Conf
·請插入磁盤:Visual Studio 2
·用VS.NET讀取Flash格式文件信
·在ASP.NET中使用AJAX的簡單方
·VS.NET 2005中常用的一些代碼
·安裝VS.NET 2005 SP1補丁全攻
相關信息
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個傳說
丟了幸福的豬
找個人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因為寂寞才想你
愛上你等于愛上了錯
在心里從此永遠有個你
一個人的寂寞兩個人的錯
主站蜘蛛池模板: 开平市| 贵南县| 海晏县| 江西省| 新河县| 明溪县| 舒兰市| 永城市| 轮台县| 海南省| 井冈山市| 青冈县| 焦作市| 阳城县| 富裕县| 昌乐县| 鹿泉市| 房山区| 万山特区| 江安县| 武山县| 延庆县| 永年县| 隆安县| 浦北县| 台湾省| 称多县| 七台河市| 方正县| 新巴尔虎右旗| 濮阳市| 江津市| 河源市| 灵武市| 仁寿县| 冷水江市| 淮安市| 南丰县| 文成县| 烟台市| 东乌珠穆沁旗|