C# 动态调用WebService, 不同结果返回值处理
2012-08-16 17:22
405 查看
asp.net中 正常的调用WebService的方法是添加web引用,但是当一些特殊情况就不是很适用了,如果webService的地址经常变化的话,每次都要重新引用编译程序是件很麻烦的事情。这里动态引用ws只需要配置一个地址就可以了。
在网上找到了许多的文章具体实现都是差不多的,基本都是同一段代码。
主要参考一下两边文章:
这个是介绍动态调用,主要用的是这哥们的代码:
/article/4246974.html
这个是介绍利用反射来获取返回的数组,虽然有个地方错了,不过大方向还是对滴:
http://blog.csdn.net/study_live/article/details/5225073
主要用的webservice代理类的代码,也可以第一篇文章最下面有下载
WebServiceClient.cs
测试方法,分别返回 string,datatable,泛型集合(这里是其实就是实体类的数组)
在网上找到了许多的文章具体实现都是差不多的,基本都是同一段代码。
主要参考一下两边文章:
这个是介绍动态调用,主要用的是这哥们的代码:
/article/4246974.html
这个是介绍利用反射来获取返回的数组,虽然有个地方错了,不过大方向还是对滴:
http://blog.csdn.net/study_live/article/details/5225073
主要用的webservice代理类的代码,也可以第一篇文章最下面有下载
WebServiceClient.cs
using System; using System.Reflection; /// <summary> /// Summary description for WebServiceClient /// </summary> public class WebServiceClient { public static string Invoke(string webServiceUrl, string methodName, object[] parameters) { if (string.IsNullOrEmpty(webServiceUrl)) { throw new Exception("WebService url required!"); } if (string.IsNullOrEmpty(methodName)) { throw new Exception("Method name required!"); } object instance = WebServiceProxy.CreateInstance(webServiceUrl); MethodInfo method = instance.GetType().GetMethod(methodName); string result = (string)method.Invoke(instance, parameters); return result; } }
测试方法,分别返回 string,datatable,泛型集合(这里是其实就是实体类的数组)
string url = "这里是你的webService地址";//可以放配置文件里 ////返回字符串 //string s = WebServiceClient.Invoke(url, "GetServerName", null); //Response.Write(s); object instance = WebServiceProxy.CreateInstance(url); ////返回datatable //MethodInfo method = instance.GetType().GetMethod("GetSubStationInfo");//方法名称 //object[] parameters = { "370102002" };//参数 //DataTable dt = (DataTable)method.Invoke(instance, parameters); //返回泛型集合 MethodInfo method = instance.GetType().GetMethod("GetRealData");//方法名称 // 如果参数传的是个 dataset , DataSet ds=new DataSet();object[] parameters = {ds}; object[] parameters = { "1510", "5" };//参数 //这里返回的是一个 实体类的数组 object objArray = method.Invoke(instance, parameters); Type tp = objArray.GetType(); if (tp.IsArray) { object[] dataArray = objArray as object[]; for (int i = 0; i < dataArray.Length; i++) { object s = dataArray[i] as object; Type t = s.GetType(); //利用一下方法获取到实体类中的属性的值 //PropertyInfo[] fi = t.GetProperties(); //string str = fi[0].GetValue(s, null).ToString(); string C0001_ITEM_CODE = t.GetProperty("C0001_ITEM_CODE").GetValue(s, null).ToString(); string C0007_PNAME = t.GetProperty("C0007_PNAME").GetValue(s, null).ToString(); //FieldInfo[] fields = t.GetFields();//返回当前type的所有公共字段 } }
C# WebService动态调用
相关文章推荐
- C#.net访问web URL并处理返回值 && 不加web引用调用webservice
- C#写的webservice返回值为xmlDocument或者xmlDataDocument,客户端调用如何进行处理
- 20101109 学习记录: C#.net访问web URL并处理返回值 && 不加web引用调用webservice
- 转载:动态调用WebService(C#)
- 动态调用WebService(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- C#中Winform动态调用Webservice的方法
- C# 动态调用WebService
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- c#动态调用Webservice的两种方法实例
- C#动态调用WebService
- C# 动态调用WebService
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息
- C# 动态调用webservice
- 记录一个.net平台下动态调用webservice的处理类(动态编辑请求soap信息)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- 动态调用WebService(C#)(转载)
- 转载:动态调用WebService(C#)