调用方:
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; } } }ZipUtil类的地址:http://blog.csdn.net/config_man/article/details/16960919 WebServiceHelper类的地址:http://blog.csdn.net/config_man/article/details/16961151
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。