http調(diào)用webservice操作httprequest、httpresponse示例
REST WCF 使得我們調(diào)用Web服務(wù)時(shí),可以通過(guò)HttpRequest的交互簡(jiǎn)單完成。那么老版的WebService能否做到呢?WebService中通過(guò)HttpContext.Current.Rquest/Response,我們一樣也可以改造WebMethod。
客戶端:
// 創(chuàng)建一個(gè)DataTable
DataTable data = new DataTable("Project");
data.Columns.Add("Name");
data.Columns.Add("Birthday");
data.Rows.Add(new object[] { "Wendy", "1978/03/11" });
data.Rows.Add(new object[] { "Philip", "2000/11/05" });
data.Rows.Add(new object[] { "Felix", "1999/08/04" });
using (var ms = new MemoryStream())
{
// 將DataTable用Xml格式寫入流
data.WriteXml(ms, XmlWriteMode.WriteSchema);
var client = new WebClient();
// 定義HttpRequest的Content-Type(xml,json等)
client.Headers.Add("Content-Type", "text/xml");
var url = "http://localhost:2609/Service1.asmx/SendXml";
// Send HttpRequest
var resp = client.UploadData(url, "POST", ms.ToArray());
var strResp = System.Text.Encoding.UTF8.GetString(resp);
MessageBox.Show(strResp);
}
服務(wù)端:
[WebMethod]
public void SendXml()
{
// 獲得客戶端RAW HttpRequest
var inputStream = HttpContext.Current.Request.InputStream;
// 定義Response返回的格式是:Json
var response = HttpContext.Current.Response;
response.ContentType = "text/json";
//var strXml = "";
//using (var sr = new StreamReader(inputStream))
// strXml = sr.ReadToEnd();
try
{
DataTable data = new DataTable();
using (var xr = XmlReader.Create(inputStream))
data.ReadXml(xr);
// 將讀入Xml的DataTable的行數(shù)返回客戶端
string count = "/"" + data.Rows.Count + "/"";
response.BinaryWrite(System.Text.Encoding.UTF8.GetBytes(count));
}
catch (Exception ex)
{
response.BinaryWrite(System.Text.Encoding.UTF8.GetBytes(ex.Message));
}
}
客戶端輸出""3""
PS: 如果客戶端的HttpRequest滿足SOAP序列化格式,WebService會(huì)為WebMethod將消息反序列化成參數(shù)。相對(duì)應(yīng)的客戶端代理類也是通過(guò)將消息反序列化成對(duì)象供客戶端使用。
- JSP 中request與response的用法詳解
- @ResponseBody 和 @RequestBody 注解的區(qū)別
- AngularJS的ng Http Request與response格式轉(zhuǎn)換方法
- C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析
- Asp.net response對(duì)象與request對(duì)象使用介紹
- ASP.NET筆記之 Request 、Response 與Server的使用
- JSP內(nèi)置對(duì)象:Request和Response的簡(jiǎn)單介紹及使用
- jquery ajax學(xué)習(xí)筆記2 使用XMLHttpRequest對(duì)象的responseXML
- JSP中Servlet的Request與Response的用法與區(qū)別
相關(guān)文章
CHECKBOX 的全選、取消及跨頁(yè)保存的實(shí)現(xiàn)方法
CHECKBOX的操作在頁(yè)面中很常見(jiàn),比如全選、取消、跨頁(yè)保存等等,下面有個(gè)不錯(cuò)的示例,大家可以嘗試操作下2013-10-10asp.net中JavaScript數(shù)據(jù)驗(yàn)證實(shí)現(xiàn)代碼
我對(duì)JavaScript一直不了解。常常為了一點(diǎn)點(diǎn)的數(shù)據(jù)驗(yàn)證和無(wú)刷新就去動(dòng)用AJAX,實(shí)在不爽——有點(diǎn)殺雞用牛刀的感覺(jué)。2010-05-05asp.net core集成CKEditor實(shí)現(xiàn)圖片上傳功能的示例代碼
這篇文章主要介紹了asp.net core集成CKEditor實(shí)現(xiàn)圖片上傳功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01在dropDownList中實(shí)現(xiàn)既能輸入一個(gè)新值又能實(shí)現(xiàn)下拉選的代碼
在dropDownList中實(shí)現(xiàn)既能輸入一個(gè)新值,又能實(shí)現(xiàn)下拉選項(xiàng),想必很多的朋友已經(jīng)為此功能按耐不住了吧,接下來(lái)與大家分享下如何實(shí)現(xiàn),感興趣的朋友可以參考下哈2013-04-04.NET?Core企業(yè)微信開(kāi)發(fā)接口回調(diào)配置
這篇文章介紹了.NET?Core企業(yè)微信回調(diào)配置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06asp.net中頁(yè)面顯示當(dāng)前系統(tǒng)時(shí)間附圖
asp.net如何實(shí)現(xiàn)在頁(yè)面顯示當(dāng)前系統(tǒng)時(shí)間,本文有個(gè)不錯(cuò)的方法,大家可以嘗試操作下,在文章末尾有截圖2013-12-12此頁(yè)的狀態(tài)信息無(wú)效,可能已損壞 的處理辦法及原因分析
此頁(yè)的狀態(tài)信息無(wú)效,可能已損壞 的處理辦法及原因分析,需要的朋友可以參考一下2013-06-06(asp.net c#)DropDownList綁定后顯示對(duì)應(yīng)的項(xiàng)的兩種方法
(asp.net c#)DropDownList綁定后顯示對(duì)應(yīng)的項(xiàng)的兩種方法 其實(shí)兩個(gè)方法的思路都是一樣,都是拿id去配對(duì)2011-04-04