Web Service动态调用.docx_第1页
Web Service动态调用.docx_第2页
Web Service动态调用.docx_第3页
Web Service动态调用.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

完全动态处理,传入服务服务网址,方法名和参数即可. usingSystem; usingSystem.Net; usingSystem.IO; usingSystem.CodeDom; usingMicrosoft.CSharp; usingSystem.CodeDom.Compiler; usingSystem.Web.Services.Description; usingSystem.Web.Services.Protocols; namespaceHB.Common /*调用方式 *stringurl=/globalweather.asmx; *stringargs=newstring2; *args0=Hangzhou; *args1=China; *objectresult=WebServiceHelper.InvokeWebService(url,GetWeather,args); *Response.Write(result.ToString(); */ publicclassWebServiceHelper #regionInvokeWebService / /动态调用web服务 / /WSDL服务地址 /方法名 /参数 / publicstaticobjectInvokeWebService(stringurl,stringmethodname,objectargs) returnWebServiceHelper.InvokeWebService(url,null,methodname,args); / /动态调用web服务 / /WSDL服务地址 /类名 /方法名 /参数 / publicstaticobjectInvokeWebService(stringurl,stringclassname,stringmethodname,objectargs) stringnamespace=EnterpriseServerBase.WebService.DynamicWebCalling; if(classname=null)|(classname=) classname=WebServiceHelper.GetWsClassName(url); try /获取WSDL WebClientwc=newWebClient(); Streamstream=wc.OpenRead(url+?WSDL); ServiceDescriptionsd=ServiceDescription.Read(stream); ServiceDescriptionImportersdi=newServiceDescriptionImporter(); sdi.AddServiceDescription(sd,); CodeNamespacecn=newCodeNamespace(namespace); /生成客户端代理类代码 CodeCompileUnitccu=newCodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn,ccu); CSharpCodeProvidericc=newCSharpCodeProvider(); /设定编译参数 CompilerParameterscplist=newCompilerParameters(); 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); /编译代理类 CompilerResultscr=icc.CompileAssemblyFromDom(cplist,ccu); if(true=cr.Errors.HasErrors) System.Text.StringBuildersb=newSystem.Text.StringBuilder(); foreach(System.CodeDom.Compiler.CompilerErrorceincr.Errors) sb.Append(ce.ToString(); sb.Append(System.Environment.NewLine); thrownewException(sb.ToString(); /生成代理实例,并调用方法 System.Reflection.Assemblyassembly=cr.CompiledAssembly; Typet=assembly.GetType(namespace+.+classname,true,true); objectobj=Activator.CreateInstance(t); System.Reflection.MethodInfomi=t.GetMethod(methodname); returnmi.Invoke(obj,args); /* PropertyInfopropertyInfo=type.GetProperty(propertyname); returnpropertyInfo.GetValue(obj,null); */ catch(Exceptionex) thrownewException(ex.InnerException.Message,newException(ex.InnerException.StackTrace); privatestaticstringGetWsClassName(stringwsUrl) stringparts=wsUrl.Split(/); stringpps=partsparts.Length-1.Split(.); returnpps0; #endregion 返回时如果不是字符串,即强制转换,如返回是DataSet,则 stringurl=/globalweather.asmx; stringa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论