zoukankan      html  css  js  c++  java
  • Asp.net动态调用WebService

    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#) (非常实用)

  • 相关阅读:
    点击CheckBox让Gridview控件在编辑与正常状态之间切换
    BMP图片转换为JPEG图片
    ASP.NET截取网页注释行之间的内容
    Mouse点击之后,复制GridView控件的数据行
    Mouse单击高亮GridView数据行
    ASP.NET div信息提示框显示几秒后隐藏
    RDLC报表带搜索与传参数功能演示(ASP.NET MVC)
    ASP.NET MVC应用程序使用axd格式文件
    Nginx通过geo模式实现限速白名单和全局负载均衡
    MySQL 下mysqladmin日常管理命令总结
  • 原文地址:https://www.cnblogs.com/icycore/p/3623059.html
Copyright © 2011-2022 走看看