1. Public Class WebServiceHelper
  2.  
  3. #Region "InvokeWebService"
  4. '动态调用web服务
  5. Public Shared Function InvokeWebService(ByVal url As String, ByVal methodname As String, ByVal args As Object()) As Object
  6. Return WebServiceHelper.InvokeWebService(url, Nothing, methodname, args)
  7. End Function
  8.  
  9. Public Shared Function InvokeWebService(ByVal url As String, ByVal classname As String, ByVal methodname As String, ByVal args As Object()) As Object
  10. Dim [namespace] As String = "EnterpriseServerBase.WebService.DynamicWebCalling"
  11. If (classname Is Nothing) OrElse (classname = "") Then
  12. classname = WebServiceHelper.GetWsClassName(url.ToLower.Replace("?wsdl", ""))
  13. End If
  14.  
  15. Try
  16. If url.ToLower.IndexOf("?wsdl") = - Then
  17. url &= "?wsdl"
  18. End If
  19.  
  20. '获取WSDL
  21. Dim wc As New WebClient()
  22. Dim stream As Stream = wc.OpenRead(url)
  23. Dim sd As ServiceDescription = ServiceDescription.Read(stream)
  24. Dim sdi As New ServiceDescriptionImporter()
  25. sdi.AddServiceDescription(sd, "", "")
  26. Dim cn As New CodeNamespace([namespace])
  27.  
  28. '生成客户端代理类代码
  29. Dim ccu As New CodeCompileUnit()
  30. ccu.Namespaces.Add(cn)
  31. sdi.Import(cn, ccu)
  32.  
  33. '设定编译参数
  34. Dim cplist As New CompilerParameters()
  35. cplist.GenerateExecutable = False
  36. cplist.GenerateInMemory = True
  37. cplist.ReferencedAssemblies.Add("System.dll")
  38. cplist.ReferencedAssemblies.Add("System.XML.dll")
  39. cplist.ReferencedAssemblies.Add("System.Web.Services.dll")
  40. cplist.ReferencedAssemblies.Add("System.Data.dll")
  41.  
  42. '编译代理类
  43. Dim vbc As New VBCodeProvider
  44. Dim cr As CompilerResults = vbc.CompileAssemblyFromDom(cplist, ccu)
  45. If True = cr.Errors.HasErrors Then
  46. Dim sb As New System.Text.StringBuilder()
  47. For Each ce As System.CodeDom.Compiler.CompilerError In cr.Errors
  48. sb.Append(ce.ToString())
  49. sb.Append(System.Environment.NewLine)
  50. Next
  51. Throw New Exception(sb.ToString())
  52. End If
  53.  
  54. '生成代理实例,并调用方法
  55. Dim assembly As System.Reflection.Assembly = cr.CompiledAssembly
  56. Dim t As Type = assembly.[GetType]([namespace] & "." & classname, True, True)
  57. Dim obj As Object = Activator.CreateInstance(t)
  58. Dim mi As System.Reflection.MethodInfo = t.GetMethod(methodname)
  59.  
  60. Return mi.Invoke(obj, args)
  61. Catch ex As Exception
  62. Throw New Exception(ex.InnerException.Message, New Exception(ex.InnerException.StackTrace))
  63. End Try
  64. End Function
  65. #End Region
  66.  
  67. Private Shared Function GetWsClassName(ByVal wsUrl As String) As String
  68. Dim parts As String() = wsUrl.Split("/"c)
  69. Dim pps As String() = parts(parts.Length - ).Split("."c)
  70.  
  71. Return pps()
  72. End Function
  73. End Class

调用方法:

  1. Public Function SyncResume(ByVal ResumeID As Integer) As String
  2. Dim sResult As String = ""
  3.  
  4. Dim url As String = "http://www.webservicex.net/globalweather.asmx"
  5. Dim args As Object() = New Object() {"beijing","China"}
  6.  
  7. sResult = WebServiceHelper.InvokeWebService(url, "GetWeather", args)
  8.  
  9. Return sResult
  10. End Function

引用自:

动态调用WebService(C#) (非常实用)

Asp.net动态调用WebService的更多相关文章

  1. ASP.NET中WebService的创建和部署以及通过反射动态调用WebService

    一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...

  2. 动态调用WebService(C#) (非常实用)

    通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...

  3. C# .NET 动态调用webservice的三种方式

    转载自 百度文库 http://wenku.baidu.com/link?url=Q2q50wohf5W6UX44zqotXFEe_XOMaib4UtI3BigaNwipOHKNETloMF4ax4W ...

  4. WebService – 2.动态调用WebService

    在本节课程中,将演示如何通过程序动态添加.调用.编译.执行WebService并返回结果. WebService动态调用示意图 WebService相关知识 代码文档对象模型CodeDom的使用 编程 ...

  5. 用C#通过反射实现动态调用WebService 告别Web引用

    我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...

  6. 动态调用WebService(C#)

    通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...

  7. 用C#通过反射实现动态调用WebService 告别Web引用(转载)

    我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...

  8. Atitit 动态调用webservice与客户端代理方式调用

    Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke  直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...

  9. 动态调用webservice(部分转载)

    动态调用webservice,做个笔记: public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> ...

随机推荐

  1. UVA 562 Dividing coins (01背包)

    题意:给你n个硬币,和n个硬币的面值.要求尽可能地平均分配成A,B两份,使得A,B之间的差最小,输出其绝对值.思路:将n个硬币的总价值累加得到sum,   A,B其中必有一人获得的钱小于等于sum/2 ...

  2. iOS多线程的初步研究(七)-- dispatch对象

    谈起iOS的dispatch(正式称谓是Grand Central Dispatch或GCD),不得不说这又是iOS(包括MacOSX)平台的创新,优缺点这里不讨论,只有当你使用时才能真正体会到.我们 ...

  3. MYSQL判断某个表是否已经存在

    方法一.You don't need to count anything. SELECT 1 FROM testtable LIMIT 1; If there's no error, table ex ...

  4. C++的优势以及用途

    C++不一定更快,但C++给你更快的机会 C++始终没有放弃的东西,一是代码表达力,二是对机器的控制力,这是其长处也是其短处,但是如果不想绑死在某平台的战车上,这两处绝对必要. 所有的平台厂商都会自称 ...

  5. MakeObjectInstance的前世今生(关键是ECX的何时入栈以及Self指针何时存储的)

    高手们的文章有很大启发,但是总有些小错,也有没交代清楚的,以下是我的理解: 编译器编译MainWndProc的时候,它是一个正常Delphi普通函数,MakeObjectInstance对它做变换是运 ...

  6. CentOS如何开启ssh远程连接

    假设VPS采用centos,再假设用较新版本6.5. VPS上可能没有安装桌面,但一般来说都会安装ssh,并且防火墙默认开放22端口. 那就从ssh开始. # 安装ssh,默认已安装好 # yum i ...

  7. 从WeUI学习到的知识点

    WeUI是微信Web服务开发的UI套件, 目前包含12个模块 (Button, Cell, Toast, Dialog, Progress, Msg, Article, ActionSheet, Ic ...

  8. openstack配置注意事项(主要是网络相关)

    vlan协议应该配置为802.1q,另一个容易混淆的为ISL,配置命令为 switchport trunk encapsulation dot1q /islswitchport mode trunk ...

  9. excel 数据导入数据表

    环境: Windows server 2012  rm sql server  2012 excel 数据导入数据表 INSERT INTO [dbo].[AdminUser] SELECT [Adm ...

  10. Maven概要[转]

    1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具. 目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本. 1.2. Maven资源 ...