http調用webservice操作httprequest、httpresponse示例
REST WCF 使得我們調用Web服務時,可以通過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);
}
服務端:
[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的行數返回客戶端
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將消息反序列化成參數。相對應的客戶端代理類也是通過將消息反序列化成對象供客戶端使用。
- JSP 中request與response的用法詳解
- @ResponseBody 和 @RequestBody 注解的區(qū)別
- AngularJS的ng Http Request與response格式轉換方法
- C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析
- Asp.net response對象與request對象使用介紹
- ASP.NET筆記之 Request 、Response 與Server的使用
- JSP內置對象:Request和Response的簡單介紹及使用
- jquery ajax學習筆記2 使用XMLHttpRequest對象的responseXML
- JSP中Servlet的Request與Response的用法與區(qū)別
相關文章
CHECKBOX 的全選、取消及跨頁保存的實現(xiàn)方法
CHECKBOX的操作在頁面中很常見,比如全選、取消、跨頁保存等等,下面有個不錯的示例,大家可以嘗試操作下2013-10-10
asp.net中JavaScript數據驗證實現(xiàn)代碼
我對JavaScript一直不了解。常常為了一點點的數據驗證和無刷新就去動用AJAX,實在不爽——有點殺雞用牛刀的感覺。2010-05-05
asp.net core集成CKEditor實現(xiàn)圖片上傳功能的示例代碼
這篇文章主要介紹了asp.net core集成CKEditor實現(xiàn)圖片上傳功能的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
在dropDownList中實現(xiàn)既能輸入一個新值又能實現(xiàn)下拉選的代碼
在dropDownList中實現(xiàn)既能輸入一個新值,又能實現(xiàn)下拉選項,想必很多的朋友已經為此功能按耐不住了吧,接下來與大家分享下如何實現(xiàn),感興趣的朋友可以參考下哈2013-04-04
此頁的狀態(tài)信息無效,可能已損壞 的處理辦法及原因分析
此頁的狀態(tài)信息無效,可能已損壞 的處理辦法及原因分析,需要的朋友可以參考一下2013-06-06
(asp.net c#)DropDownList綁定后顯示對應的項的兩種方法
(asp.net c#)DropDownList綁定后顯示對應的項的兩種方法 其實兩個方法的思路都是一樣,都是拿id去配對2011-04-04

