源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
楼主: ttx9n

[ASP.NET] http调用webservice操作httprequest、httpresponse示例

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2014-5-5 11:29:59 | 显示全部楼层 |阅读模式
这篇文章主要介绍了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将消息反序列化成参数。相对应的客户端代理类也是通过将消息反序列化成对象供客户端使用。

回复

使用道具 举报

0

主题

2万

回帖

61

积分

注册会员

Rank: 2

积分
61
发表于 2023-8-23 20:03:29 | 显示全部楼层
谢谢小Y分享
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

473

积分

中级会员

Rank: 3Rank: 3

积分
473
发表于 2023-9-14 13:07:20 | 显示全部楼层
天天源码社区论坛
回复 支持 反对

使用道具 举报

4

主题

2万

回帖

107

积分

注册会员

Rank: 2

积分
107
发表于 2023-11-21 07:48:04 | 显示全部楼层
终于找到了,我擦
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2024-3-17 05:37:58 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

6

主题

2万

回帖

247

积分

中级会员

Rank: 3Rank: 3

积分
247
发表于 2024-4-14 21:28:37 | 显示全部楼层
老大你好你好好你好
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2024-5-2 16:31:38 | 显示全部楼层
人都不在了啊 啊
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

307

积分

中级会员

Rank: 3Rank: 3

积分
307
发表于 2024-5-25 23:18:43 | 显示全部楼层
逛逛看看瞧瞧
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2024-7-26 13:28:43 | 显示全部楼层
啦啦啦啦啦啦啦啦!
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2024-8-5 02:51:52 | 显示全部楼层
抽根烟,下来看看再说
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2025-2-1 19:45 , Processed in 0.189162 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表