.net下调用webservice(json格式、ut8转码、zip压缩) 分类: .NET 2013-11-26 11:02 1309人阅读 评论(0) 收藏
写2个项目,一个console,一个web
调用方:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; namespace ConsoleWSTest { class Program { static void Main(string[] args) { string url = "http://localhost:23978/TestEmpowerBinding.asmx"; string methodname = "Login"; //此处只需创建要传递的对象(单个对象、集合等),然后调用Json类进行转化 //暂时以自己拼凑出的json格式字符串为例(国、省、市) /*************************************** Json格式传参的WebService调用 ***************************************/ string source = "{\"name\":\"中国\",\"province\":[{\"name\":\"黑龙江\",\"cities\":{\"city\":[\"哈尔滨\",\"大庆\"]}},{\"name\":\"广东\",\"cities\":{\"city\":[\"广州\",\"深圳\",\"珠海\"]}},{\"name\":\"台湾\",\"cities\":{\"city\":[\"台北\",\"高雄\"]}},{\"name\":\"新疆\",\"cities\":{\"city\":[\"乌鲁木齐\"]}}]}"; /*************************************** http的utf8转码 + json 格式的WebService调用***************************************/ string encodeSource = HttpUtility.UrlEncode(source, Encoding.UTF8); /*************************************** http的utf8转码 + json 格式的WebService调用(zip压缩)***************************************/ encodeSource = ZipUtil.Compress(encodeSource); WebServiceHelper.InvokeWebService(url, methodname, new object[] { encodeSource }); } } }
被调用方:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace TestWS { /// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class TestEmpowerBinding : System.Web.Services.WebService { [WebMethod] public void Login(string source) { //解压缩 source = ZipUtil.Decompress(source); //utf8转码 source = HttpUtility.UrlDecode(source, Encoding.UTF8); //将转码后的json格式字符串转化为实体对象 China china = Json.JsonDeserializeByArrayData<China>(source); //取出此实体对象中的值 string name = china.name; foreach (Province province in china.province) { string p_name = province.name; string[] city = province.cities.city; } } } }
China类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GDSService.Facade { public class China { public string name { get; set; } public List<Province> province = new List<Province>(); } public class Province { public string name { get; set; } public Cities cities = new Cities(); } public class Cities { public string[] city { get; set; } } }
WebServiceHelper类的地址:http://blog.csdn.net/config_man/article/details/16961151
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具