http調(diào)用webservice操作httprequest、httpresponse示例
REST WCF 使得我們調(diào)用Web服務(wù)時,可以通過HttpRequest的交互簡單完成。那么老版的WebService能否做到呢?WebService中通過HttpContext.Current.Rquest/Response,我們一樣也可以改造WebMethod。
客戶端:
// 創(chuàng)建一個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會為WebMethod將消息反序列化成參數(shù)。相對應(yīng)的客戶端代理類也是通過將消息反序列化成對象供客戶端使用。
- JSP 中request與response的用法詳解
- @ResponseBody 和 @RequestBody 注解的區(qū)別
- AngularJS的ng Http Request與response格式轉(zhuǎn)換方法
- C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析
- Asp.net response對象與request對象使用介紹
- ASP.NET筆記之 Request 、Response 與Server的使用
- JSP內(nèi)置對象:Request和Response的簡單介紹及使用
- jquery ajax學(xué)習(xí)筆記2 使用XMLHttpRequest對象的responseXML
- JSP中Servlet的Request與Response的用法與區(qū)別
相關(guān)文章
asp.net 自定義控件實現(xiàn)無刷新上傳圖片,立即顯示縮略圖,保存圖片縮略圖
自定義控件實現(xiàn)無刷新上傳圖片,立即顯示縮略圖,保存圖片縮略圖2010-01-01
.net 像hao123的快捷郵箱登陸的實現(xiàn)代碼
.net實現(xiàn)的像hao123的快捷郵箱登陸的代碼,需要的朋友可以參考下。2010-03-03
asp.net開發(fā)微信派發(fā)現(xiàn)金紅包/H5網(wǎng)頁搶紅包功能(思路詳解)
這篇文章主要介紹了asp.net開發(fā)微信派發(fā)現(xiàn)金紅包/H5網(wǎng)頁搶紅包功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
ASP.NET實現(xiàn)將word文檔轉(zhuǎn)換成pdf的方法
這篇文章主要介紹了ASP.NET實現(xiàn)將word文檔轉(zhuǎn)換成pdf的方法,包含了兩種實現(xiàn)方法進行比對分析,非常具有實用價值,需要的朋友可以參考下2014-10-10
靈活掌握asp.net中g(shù)ridview控件的多種使用方法(上)
這篇文章向大家推薦如何靈活掌握asp.net中g(shù)ridview控件的多種使用方法,感興趣的小伙伴們可以參考一下2015-11-11
關(guān)于.NET Framework中的設(shè)計模式--應(yīng)用策略模式為List排序
本篇文章,小編將為大家介紹關(guān)于.NET Framework中的設(shè)計模式--應(yīng)用策略模式為List排序,有需要的朋友可以參考一下2013-04-04
一次.net?core異步線程設(shè)置超時時間的實戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于.net?core異步線程設(shè)置超時時間的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-02-02
ASP.NET中RadioButtonList綁定后臺數(shù)據(jù)后觸發(fā)點擊事件
這篇文章主要介紹了ASP.NET中RadioButtonList綁定后臺數(shù)據(jù)后觸發(fā)點擊事件的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-05-05

