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") = - 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 - ).Split("."c)
- Return pps()
- 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
引用自:
Asp.net动态调用WebService的更多相关文章
- ASP.NET中WebService的创建和部署以及通过反射动态调用WebService
一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...
- 动态调用WebService(C#) (非常实用)
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- C# .NET 动态调用webservice的三种方式
转载自 百度文库 http://wenku.baidu.com/link?url=Q2q50wohf5W6UX44zqotXFEe_XOMaib4UtI3BigaNwipOHKNETloMF4ax4W ...
- WebService – 2.动态调用WebService
在本节课程中,将演示如何通过程序动态添加.调用.编译.执行WebService并返回结果. WebService动态调用示意图 WebService相关知识 代码文档对象模型CodeDom的使用 编程 ...
- 用C#通过反射实现动态调用WebService 告别Web引用
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- 动态调用WebService(C#)
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- 用C#通过反射实现动态调用WebService 告别Web引用(转载)
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke 直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...
- 动态调用webservice(部分转载)
动态调用webservice,做个笔记: public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> ...
随机推荐
- UVA 562 Dividing coins (01背包)
题意:给你n个硬币,和n个硬币的面值.要求尽可能地平均分配成A,B两份,使得A,B之间的差最小,输出其绝对值.思路:将n个硬币的总价值累加得到sum, A,B其中必有一人获得的钱小于等于sum/2 ...
- iOS多线程的初步研究(七)-- dispatch对象
谈起iOS的dispatch(正式称谓是Grand Central Dispatch或GCD),不得不说这又是iOS(包括MacOSX)平台的创新,优缺点这里不讨论,只有当你使用时才能真正体会到.我们 ...
- MYSQL判断某个表是否已经存在
方法一.You don't need to count anything. SELECT 1 FROM testtable LIMIT 1; If there's no error, table ex ...
- C++的优势以及用途
C++不一定更快,但C++给你更快的机会 C++始终没有放弃的东西,一是代码表达力,二是对机器的控制力,这是其长处也是其短处,但是如果不想绑死在某平台的战车上,这两处绝对必要. 所有的平台厂商都会自称 ...
- MakeObjectInstance的前世今生(关键是ECX的何时入栈以及Self指针何时存储的)
高手们的文章有很大启发,但是总有些小错,也有没交代清楚的,以下是我的理解: 编译器编译MainWndProc的时候,它是一个正常Delphi普通函数,MakeObjectInstance对它做变换是运 ...
- CentOS如何开启ssh远程连接
假设VPS采用centos,再假设用较新版本6.5. VPS上可能没有安装桌面,但一般来说都会安装ssh,并且防火墙默认开放22端口. 那就从ssh开始. # 安装ssh,默认已安装好 # yum i ...
- 从WeUI学习到的知识点
WeUI是微信Web服务开发的UI套件, 目前包含12个模块 (Button, Cell, Toast, Dialog, Progress, Msg, Article, ActionSheet, Ic ...
- openstack配置注意事项(主要是网络相关)
vlan协议应该配置为802.1q,另一个容易混淆的为ISL,配置命令为 switchport trunk encapsulation dot1q /islswitchport mode trunk ...
- excel 数据导入数据表
环境: Windows server 2012 rm sql server 2012 excel 数据导入数据表 INSERT INTO [dbo].[AdminUser] SELECT [Adm ...
- Maven概要[转]
1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具. 目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本. 1.2. Maven资源 ...