① .net 中如何在web中如何調用webservice
你的意思,是界面上有id,name等store和People的信息,按鈕的click事件來存儲嗎?
若是這樣,你webService中肯定有個實現保存的方法,並且這個方法接收相應參數,假如這個方法為SaveInfo(People p,Store s),你可以先准備調用webService方法需要傳遞的參數值,然後調用:
Peoplem=newPeople();
....//從界面文本框獲取People值
stores=newStore();
s.id=從界面相應文本框獲取;
s.Name=從界面相應文本框獲取;
....
WebReference.WebService1serviceMethod=newWebReference.WebService1();
serviceMethod.SaveInfo(m,s);
備註:1.webservice的參考名稱為:WebReference,類名稱為:WebService1,要調用的方法名稱為webService
2.若webservice與要調用的項目是跨平台的,可以將傳輸的參數序列化,在webService方法中對接收到的參數進行反序列化後再進行保存等處理
② 怎樣創建.NET Web Service
C#學習到一定程度會涉及到C#創建WebService的一些高階知識,本文試圖對此做一個簡單的介紹。
假設A是客戶端,B是webservice服務端,用戶通過http協議向伺服器發送soap請求,webservice返回客戶端Xml格式的數據。
現在我們看一看創建一個C#創建WebService的大致過程:
服務端的webservice是必須要建的。中間的soap,Xml我們不用去關心,在客戶端這邊,比較重要的是如何從webservice取得對象?答案是用的是proxy對象。客戶端由代理對象(proxy)負責與webservice的通信。所以在客戶端使用webservice,完全和使用一個本地對象是一樣的。
我們現在以一個簡單的C#創建WebService實例來說明。
打開vs.Net,新建工程(asp.Net web服務),在位置中鍵入http。//localhost/webserver,其中webserver就是工程的名字。確定後,出現一個Service1.asmx.cx,雙擊,出現代碼窗口,
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; namespace webserver { /// /// Service1 的摘要說明。 /// (1) public class Service1 : System.Web.Services.WebService { public Service1() { //CODEGEN:該調用是 ASP.Net Web 服務設計器所必需的 InitializeComponent(); } #region Component Designer generated code //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)處加入
[WebService(Namespace="http。//localhost/webserver/")]
這是因為soap是基於http協議上的,客戶端無法知道webservice位於那個伺服器上。在實際應用中,比如http。//www。ourfly。com上放置這個webservice,則Namespace改為http。//www。ourfly。com/webserver.
下面我們給這個webservice添加一個方法。
// [WebMethod] // public string HelloWorld() // { // return "Hello World"; // } 微軟幫我們寫好了一個,接著添加一個方法。 方法名稱叫show. [WebMethod] public string show(string yourname) { return 「http。//www。ourfly。com」+」歡迎」+yourname; } 現在,就可以運行了,按F5,點擊show,輸入你的名字, 然後點擊invote 看到了吧。 〈 ?Xml version="1.0" encoding="utf-8" ?〉 〈 string Xmlns="http。//tempuri。org/"〉 http。//www。ourfly。com歡迎g〈 /string〉 成功了。打開bin目錄,Vs.Net已經將proxy做好了.webserver.dll.
現在我們在不同的環境下測試:
1.打開vs.Net,新建」windows應用程序」工程,命名為Client,增加按鈕,文本框。
現在要用到代理了,右鍵單擊右邊的reference(引用),選擇」添加引用」,選擇瀏覽,找到webserver目錄下的bin目錄下的webserver.dll
再加入一個system.web.webservices的引用,在列表中有。
在form1.cs里,加入
using System.Web.Services;
using webserver;
然後在
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
後面,插入
private webserver.service1 Client
建立一個service1的實例。雙擊按鈕,代碼如下:
private void button1_Click (object sender, System.EventArgs e) { Client =new Service1(); string name; name=Client.show("龍卷風.Net"); textBox1.Text=name; } 按F5,運行工程,點擊按鈕,文本框中顯示 http。//www。ourfly。com歡迎龍卷風.Net
2. Asp.Net web窗口的測試
方法與上面的一模一樣,添加引用,建立service1的實例 在此不在細說。
3.在VB中測試
這個就要相對來說復雜一些 ,首先在VB中建立一個」標准EXE」的工程。添加引用:Microsoft Soap Type library。
注意:如果沒有安裝Microsoft Soap Toolkit,是沒有這個類型庫的。
③ vb.net調用webservice和MVC模式,這兩種編程方式有什麼區別啊
當前,WebService是一個熱門話題。但是,WebService究竟是什麼?什麼情況下應該用WebService?什麼情況下不應該用WebService?是需要我們正確認識的。 實際上,WebService的主要目標是跨平台的可互操作性。為了達到這一目標,WebService完全基於...
④ .net中WebService如何使用Session
新建web服務WebService.asmx的方法:
[WebMethod(EnableSession = true)]
public string Login(string name)
{
Context.Session["name"] = name;
return name;
}
[WebMethod(EnableSession = true)]
public string GetName()
{
if (Context.Session["name"] != null)
return Context.Session["name"].ToString();
else
return "";
}
3 添加asp.net頁面SessionInWebservice.aspx
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:Button ID="btnLogin" runat="server"
Text="Login" OnClick="btnLogin_Click" />
</div>
<div>
<asp:Button ID="btnGetName" runat="server"
Text="GetName" OnClick="btnGetName_Click" />
<asp:Label ID="lblName" runat="server" Text="Label"></asp:Label>
</div>
</form>
SessionInWebservice.aspx.cs
protected void btnLogin_Click(object sender, EventArgs e)
{
WebService ws = new WebService();
ws.Login(txtName.Text);
}
protected void btnGetName_Click(object sender, EventArgs e)
{
WebService ws = new WebService();
lblName.Text = ws.GetName();
}
⑤ Visual2008開發 vb.net,我點擊按鈕怎麼發送數據給我的webservice
添加服務引用,然後調用HelloWorld方法,將數據以參數的形式傳遞給 HelloWorld
⑥ .net中webservice是同步調用還是非同步調用
WebService
其實非同步調用WebService是不需要在WebService中做任何操作的,只是普通的WebService就可以了,下面是我寫的一個簡單的WebService返回SqlServer2000中NorthWind資料庫中所有員工的信息
[WebMethod]
public DLL.EmployeesDataTable getEmployee()
{
DLL.EmployeesDataTable result = new DLL.EmployeesDataTable();
DLLTableAdapters.EmployeesTableAdapter eta = new WebServiceAsyn.DLLTableAdapters.EmployeesTableAdapter();
eta.FillEmployee(result);
return result;
} 這里我需要聲明一下,返回的 DLL.EmployeesDataTable類型是我用DataSet生成的強類型,或者你可以認為他是DataTable。
如何在Asp.Net里引入WebService呢?首先右鍵單擊解決方案資源管理器中的項目,然後選擇添加Web引用(你也可以單擊網站菜單選擇添加Web引用),在彈出的對話框中填入WebService的地址,並填寫Web引用名後點擊添加引用按鈕就可以了,這時我們就可以在代碼視圖中根據web引用名來對WebService進行調用了,下面是我的CS代碼
//實體化WebService引用
private AsynWebService.Service1 asynSer;
//構造函數初始化WebService引用,並為非同步調用WebService設置好了結果處理函數【方法名Completed】(先這么叫吧,我也不知道怎麼叫)
public _Default()
{
asynSer = new AsynWebService.Service1();
asynSer.HelloWorldCompleted += new AsynWebService.(asynSer_HelloWorldCompleted);
asynSer.getEmployeeCompleted += new AsynWebService.(asynSer_getEmployeeCompleted);
}
protected void Button1_Click(object sender, EventArgs e)
{
//開始非同步調用HelloWorld;
asynSer.HelloWorldAsync();
}
protected void asynSer_HelloWorldCompleted(object sender, AsynWebService.HelloWorldCompletedEventArgs e)
{
this.Label1.Text = e.Result.ToString();
}
protected void asynSer_getEmployeeCompleted(object sender, AsynWebService.getEmployeeCompletedEventArgs e)
{
this.GridView1.DataSource = e.Result;
this.GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
//開始非同步調用getEmployee
asynSer.getEmployeeAsync();
} 到這里我們後台代碼就寫完了,但是我們還要在ASPX頁面設置一個允許非同步調用的屬性 Async="true"這樣就可以在這個頁面里進行非同步調用了!
同步調用的方法和非同步調用的方法不一樣,非同步調用的方法是WebServic的方法名+Async()作為方法名,同步調用的方法就是WebService的方法名。
其實從原理上看不管是Ajax還是Asp.Net或者Flex它們的非同步調用都是一樣的,下面我們來和Ajax比較一下Ajax中的核心對象--XMLHttpRequest對象一個非常重要的屬性就是onreadystatechange,下面是一個基於Ajax的簡單的用戶名的驗證<script language="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function requestStart()
{
if(document.getElementById("tbx1").value.length <= 4)
{
alert("用戶名的長度要求大於4個字元!");
return false;
}
document.getElementById("sp1").innerText = "Loding";
var url = "default.aspx?userName=" + document.getElementById("tbx1").value;
createXMLHttpRequest();//創建XMLHttpRequest對象
xmlHttp.onreadystatechange = callBack;//為XMLHttpRequest對象指定結果處理函數
xmlHttp.open("GET",url);//打開鏈接
xmlHttp.send(null);//發送請求
}
//結果處理函數
function callBack()
{
if(xmlHttp.readyState == 4)
{
document.getElementById("sp1").innerText = xmlHttp.responseText;
}
}
</script>
⑦ VB.NET第一次調用WebService慢
webservice如果是java或者.net開發的, 在第一次調用的時候才會把虛擬機代碼編譯為真正可運行的機器碼, 這過程是需要時間的. 所以第一次運行永遠是很慢的, 編譯好了駐留內存了性能就和直接用C++等語言編寫的代碼差不多了
⑧ 調用.net的webservice,傳參怎麼寫
這就要看WebService參數都是那些類型了,就和你寫的方法一樣,例如Add(intnum1,intnum2)那麼你使用這個方法的時候就要傳遞倆個整型參數num1,num2就行
⑨ webservice 問題,vb.net的
那就是你的對象的內容,有不符合規則的,你DEBUG一下
---------------------------------------------------
錯誤信息是什麼?
你的pxyUpdateQnA.UpdateQuestions(pQuestionID, pUserID, pTitle, pDetails, status, pTblUserID)
裡面的變數的數據類型,是否都是對的
⑩ vb.net如何動態調用WebService介面啊
調用webservice介面
一般分為靜態調用和動態調用
靜態調用就是在項目中直接添加服務引用或者web服務引用;
動態調用就是通過模擬http協議調用,這種網上很多提供動態調用服務的處理類,找找直接用就可以了;
靜態調用特點:服務參數包含復雜類型(比如自定義的一些實體類)用它比較方便,但是服務如果改變(服務地址更新,服務內容更新)就需要在項目中更新服務引用,重新編譯程序;
動態調用特點:對於服務參數包含復雜類型的處理不是很好,如果服務內容改變不需要重新編譯程序;
大致想到就這樣,詳細的可以在網上找找相關的網文,很多資料可以參考的