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> ...
随机推荐
- ***PHP implode() 函数,将数组合并为字符串;explode() 函数,把字符串打散为数组
实例 把数组元素组合为字符串: <?php $arr = array('Hello','World!','I','love','Shanghai!'); echo implode(" ...
- Map中放置类指针并实现调用
工作中使用到多进程通信,利用到了map以及multimap来进行实现. 需要做一个简单测试例子,直接上代码. /* * main.cpp * Created on: Oct 28, 2013 * Au ...
- eclipse调试web项目
Eclipse上的Web项目调试 在Eclipse中开发Web项目的首要难题就是如何进行代码调试.本文简要说明一下在Eclipse中使用Tomcat和Jetty调试Java Web项目的方法. Tom ...
- JLink and JTAG等接口简介
1.JTAG JTAG用的计算机的并口,JTAG也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协议,如DSP.FPGA器件等. 标准的J ...
- WordPress主题制作教程2:导航菜单制作
实现自定义菜单,需要用到的函数是wp_nav_menu(); 在主题目录下的functions.php的 <?php ….. ?> 之间,添加以下菜单注册代码,这样你就可以在主题文件中使用 ...
- 让浏览器屏蔽js
有时候为了测试js是否做到了渐进增强,需要屏蔽下js 做法: Internet选项>>安全>>自定义级别 禁用java小程序脚本和活动脚本 有的浏览器调试器直接就有这个功能
- C 中数组和指针的区别
联系: 1,一个通过数组和下标实现的表达式可等价地通过指针和偏移量实现. 2,当数组名传递给一个函数时,实际上传递的是该数组第一个元素的地址. 区别: 1,指针是一个变量,因此,在C语言中,语句pa= ...
- ActiveMQ简单的HelloWorld实例
我们使用ActiveMQ为大家实现一种点对点的消息模型. 开发时候,要将apache-activemq-5.12.0-bin.zip解压缩后里面的activemq-all-5.12.0.jar包加入到 ...
- lua简化cocos2dx的Action动画序列
情景 今天写代码时,又要写一个很常见的动画,就是变大变小模拟那个弹性的赶脚,很常用但写起来挺麻烦,封装一下用起来就简单多了. 当然我也知道有缓动动画(EaseAction)可以实现反弹效果,但这不是重 ...
- hive0.13网络接口安装
安装好hive 0.13以后,在./lib下找不到hive-hwi-0.13.1.war ,那该怎么办? 1.下载hive-0.12.0版本,把这一版里面的hive-hwi-0.12.0.war重 ...