Asp.net动态调用WebService
2014-03-25 14:26
393 查看
Public Class WebServiceHelper #Region "InvokeWebService" '动态调用web服务 Public Shared Function InvokeWebService(ByVal url As String, ByVal methodname As String, ByVal args As Object()) As Object Return WebServiceHelper.InvokeWebService(url, Nothing, methodname, args) End Function Public Shared Function InvokeWebService(ByVal url As String, ByVal classname As String, ByVal methodname As String, ByVal args As Object()) As Object Dim [namespace] As String = "EnterpriseServerBase.WebService.DynamicWebCalling" If (classname Is Nothing) OrElse (classname = "") Then classname = WebServiceHelper.GetWsClassName(url.ToLower.Replace("?wsdl", "")) End If Try If url.ToLower.IndexOf("?wsdl") = -1 Then url &= "?wsdl" End If '获取WSDL Dim wc As New WebClient() Dim stream As Stream = wc.OpenRead(url) Dim sd As ServiceDescription = ServiceDescription.Read(stream) Dim sdi As New ServiceDescriptionImporter() sdi.AddServiceDescription(sd, "", "") Dim cn As New CodeNamespace([namespace]) '生成客户端代理类代码 Dim ccu As New CodeCompileUnit() ccu.Namespaces.Add(cn) sdi.Import(cn, ccu) '设定编译参数 Dim cplist As New CompilerParameters() cplist.GenerateExecutable = False cplist.GenerateInMemory = True cplist.ReferencedAssemblies.Add("System.dll") cplist.ReferencedAssemblies.Add("System.XML.dll") cplist.ReferencedAssemblies.Add("System.Web.Services.dll") cplist.ReferencedAssemblies.Add("System.Data.dll") '编译代理类 Dim vbc As New VBCodeProvider Dim cr As CompilerResults = vbc.CompileAssemblyFromDom(cplist, ccu) If True = cr.Errors.HasErrors Then Dim sb As New System.Text.StringBuilder() For Each ce As System.CodeDom.Compiler.CompilerError In cr.Errors sb.Append(ce.ToString()) sb.Append(System.Environment.NewLine) Next Throw New Exception(sb.ToString()) End If '生成代理实例,并调用方法 Dim assembly As System.Reflection.Assembly = cr.CompiledAssembly Dim t As Type = assembly.[GetType]([namespace] & "." & classname, True, True) Dim obj As Object = Activator.CreateInstance(t) Dim mi As System.Reflection.MethodInfo = t.GetMethod(methodname) Return mi.Invoke(obj, args) Catch ex As Exception Throw New Exception(ex.InnerException.Message, New Exception(ex.InnerException.StackTrace)) End Try End Function #End Region Private Shared Function GetWsClassName(ByVal wsUrl As String) As String Dim parts As String() = wsUrl.Split("/"c) Dim pps As String() = parts(parts.Length - 1).Split("."c) Return pps(0) End Function End Class
调用方法:
Public Function SyncResume(ByVal ResumeID As Integer) As String Dim sResult As String = "" Dim url As String = "http://www.webservicex.net/globalweather.asmx" Dim args As Object() = New Object() {"beijing","China"} sResult = WebServiceHelper.InvokeWebService(url, "GetWeather", args) Return sResult End Function
引用自:
动态调用WebService(C#) (非常实用)
相关文章推荐
- ASP.NET页面错误处理
- asp.net 实现对xml文件的 读取,添加,删除,修改
- Asp.net MVC 视图引擎集合
- 在asp.net web form 中使用ajax
- ASP.NET MVC Web API 学习笔记---联系人增删改查
- ASP.NET MVC 5 - 给数据模型添加校验器
- [转]支付宝接口程序、文档及解读(ASP.NET)
- 在asp.net web form项目中使用json
- ASP 连接 MSSQL 数据库
- 2014年3月份第3周51Aspx源码发布详情
- asp.net读取word文档
- ASP.NET 使用AJAX让GridView的数据行显示提示框(ToolTip)
- asp.net中的ashx文件有什么用?
- ASP.NET页面刷新与全局变量
- ASP.NET中的SQL注入攻击与防护
- asp.net动态输出透明gif图片
- asp.NET 安全检查
- Win7、win2008中让IIS7支持asp的方法
- 关于在ASP.NET中以DCOM方式操作Excel的几个问题
- ASP.NET MVC验证码演示