http调用webservice操作httprequest、httpresponse示例
REST WCF 使得我们调用Web服务时,可以通过HttpRequest的交互简单完成。那么老版的WebService能否做到呢?WebService中通过HttpContext.Current.Rquest/Response,我们一样也可以改造WebMethod。
客户端:
// 创建一个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 注解的区别
- AngularJS的ng Http Request与response格式转换方法
- C#中Request.Cookies 和 Response.Cookies 的区别分析
- Asp.net response对象与request对象使用介绍
- ASP.NET笔记之 Request 、Response 与Server的使用
- JSP内置对象:Request和Response的简单介绍及使用
- jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
- JSP中Servlet的Request与Response的用法与区别
相关文章
asp.net core集成CKEditor实现图片上传功能的示例代码
这篇文章主要介绍了asp.net core集成CKEditor实现图片上传功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01在dropDownList中实现既能输入一个新值又能实现下拉选的代码
在dropDownList中实现既能输入一个新值,又能实现下拉选项,想必很多的朋友已经为此功能按耐不住了吧,接下来与大家分享下如何实现,感兴趣的朋友可以参考下哈2013-04-04(asp.net c#)DropDownList绑定后显示对应的项的两种方法
(asp.net c#)DropDownList绑定后显示对应的项的两种方法 其实两个方法的思路都是一样,都是拿id去配对2011-04-04
最新评论