http调用webservice操作httprequest、httpresponse示例

2025-05-29 0 24

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将消息反序列化成参数。相对应的客户端代理类也是通过将消息反序列化成对象供客户端使用。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 http调用webservice操作httprequest、httpresponse示例 https://www.kuaiidc.com/103099.html

相关文章

发表评论
暂无评论