asp.net 动态调用webservice方法
2017-08-07 15:16
357 查看
假设我们现在已经有一个做好的webservice方法:
那么我们如何来调用这个方法呢,有两种方式,一种是通过c#后台调用,一种是通过jquery的ajax方式调用。以下是具体的调用方法:
① 创建一个调用webservice的代理类:
②,创建一个调用webservice 的页面:GetWebServiceFunc.aspx
,在其后台代码中,增加一个方法:
接下来,我们就可以通过以下方式,来调用这个方法了,第一种是通过c#后端程序来调用。
另一种,是通过jquery的ajax来调用:
通过以上程序,我们就实现了对webservice的调用,在这里顺便记录了具体的使用方法。
[WebMethod(Description = "获取分包商进场计划信息明细(根据时间范围)")] public string getSubcontractorPlanList(string SubcontractorAccount,string StartDate, string EndDate) { string returnString = "abc"; return returnString; }
那么我们如何来调用这个方法呢,有两种方式,一种是通过c#后台调用,一种是通过jquery的ajax方式调用。以下是具体的调用方法:
① 创建一个调用webservice的代理类:
using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Net; using System.Web.Services.Description; using System.CodeDom; using System.CodeDom.Compiler; using System.Reflection; namespace WebApplication1 { public class WebServiceAgent { private object agent; private Type agentType; private const string CODE_NAMESPACE = "Beyondbit.WebServiceAgent.Dynamic"; /// <summary< /// 构造函数 /// </summary< /// <param name="url"<</param< public WebServiceAgent() { string url = "http://xx.com/AppService/abc.asmx"; XmlTextReader reader = new XmlTextReader(url + "?wsdl"); //创建和格式化 WSDL 文档 ServiceDescription sd = ServiceDescription.Read(reader); //创建客户端代理代理类 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); sdi.AddServiceDescription(sd, null, null); //使用 CodeDom 编译客户端代理类 CodeNamespace cn = new CodeNamespace(CODE_NAMESPACE); CodeCompileUnit ccu = new CodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn, ccu); Microsoft.CSharp.CSharpCodeProvider icc = new Microsoft.CSharp.CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu); agentType = cr.CompiledAssembly.GetTypes()[0]; agent = Activator.CreateInstance(agentType); } ///<summary< ///调用指定的方法 ///</summary< ///<param name="methodName"<方法名,大小写敏感</param< ///<param name="args"<参数,按照参数顺序赋值</param< ///<returns<Web服务的返回值</returns> public object Invoke(string methodName, params object[] args) { MethodInfo mi = agentType.GetMethod(methodName); return this.Invoke(mi, args); } ///<summary< ///调用指定方法 ///</summary< ///<param name="method"<方法信息</param< ///<param name="args"<参数,按照参数顺序赋值</param< ///<returns<Web服务的返回值</returns< public object Invoke(MethodInfo method, params object[] args) { return method.Invoke(agent, args); } public MethodInfo[] Methods { get { return agentType.GetMethods(); } } } }
②,创建一个调用webservice 的页面:GetWebServiceFunc.aspx
,在其后台代码中,增加一个方法:
[WebMethod] public static string Invoke(string MethodName,string ObjStr) { object[] args = null; string[] arr = ObjStr.Split(new string[] { ";#" }, StringSplitOptions.None); if (arr != null && arr.Length > 0) { args = new object[arr.Length-1]; for (int i = 0; i < arr.Length-1; i++) { string value = Convert.ToString(arr[i]); if (value == "null") { args[i] = ""; } else { args[i] = value; } } } return Convert.ToString(new WebServiceAgent().Invoke(MethodName, args)); }
接下来,我们就可以通过以下方式,来调用这个方法了,第一种是通过c#后端程序来调用。
WebServiceAgent agent = new WebServiceAgent(); object[] args = new object[3]; args[0] = "csfbs"; args[1] = "2017-07-01"; args[2] = ""; string text = agent.Invoke("getSubcontractorPlanList", args).ToString();
另一种,是通过jquery的ajax来调用:
<script src="./js/jquery-1.9.1.min.js"></script> <script> $(document).ready(function () { $.ajax({ type: "Post", //方法所在页面和方法名 url: "GetWebServiceFunc.aspx/Invoke", data: "{'MethodName':'getSubcontractorPlanList','ObjStr':'csfbs;#2017-07-01;#null;#'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { //返回的数据用data.d获取内容 alert(data.d); }, error: function (err) { alert('fail'); } }); }); </script>
通过以上程序,我们就实现了对webservice的调用,在这里顺便记录了具体的使用方法。
相关文章推荐
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- asp.net动态添加js文件调用到网页的方法
- webservice方法内用了session,asp.net调用时注意问题
- Net 下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法
- ASP.NET 2.0 AJAX中Webservice调用方法
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子(原创)
- 如何动态调用asp.net Webservice
- asp.net在后端动态添加样式表调用的方法
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子(原创)
- [转]jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- [转]ASP.NET 2.0 AJAX中Webservice调用方法示例 (包含参数类型为DataTable的WS方法)
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- ASP.NET 2.0 AJAX中Webservice调用方法示例
- [转]jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子(原创)
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
- asp.net动态添加js文件调用到网页的方法
- ASP.NET 2.0 AJAX中Webservice调用方法示例