欢迎光临
我们一直在努力

动态调用Webservice-.NET教程,Web Service开发

建站超值云服务器,限时71元/月

/// <summary>

/// 根据指定的信息,调用远程webservice方法

/// </summary>

/// <param name="url">webservice的http形式的地址</param>

/// <param name="namespace">欲调用的webservice的命名空间</param>

/// <param name="classname">欲调用的webservice的类名(不包括命名空间前缀)</param>

/// <param name="methodname">欲调用的webservice的方法名</param>

/// <param name="args">参数列表</param>

/// <returns>webservice的执行结果</returns>

/// <remarks>

/// 如果调用失败,将会抛出exception。请调用的时候,适当截获异常。

/// 异常信息可能会发生在两个地方:

/// 1、动态构造webservice的时候,compileassembly失败。

/// 2、webservice本身执行失败。

/// </remarks>

/// <example>

/// <code>

/// object obj = invokewebservice("http://localhost/gsp_workflowwebservice/common.asmx","genersoft.platform.service.workflow","common","gettooltype",new object[]{"1"});

/// </code>

/// </example>

private object invokewebservice(string url, string @namespace, string classname, string methodname, object[] args)

{

try

{

system.net.webclient wc = new system.net.webclient();

system.io.stream stream = wc.openread(url+"?wsdl");

system.web.services.description.servicedescription sd = system.web.services.description.servicedescription.read(stream);

system.web.services.description.servicedescriptionimporter sdi = new system.web.services.description.servicedescriptionimporter();

sdi.addservicedescription(sd,"","");

system.codedom.codenamespace cn = new system.codedom.codenamespace(@namespace);

system.codedom.codecompileunit ccu = new system.codedom.codecompileunit();

ccu.namespaces.add(cn);

sdi.import(cn,ccu);

microsoft.csharp.csharpcodeprovider csc = new microsoft.csharp.csharpcodeprovider();

system.codedom.compiler.icodecompiler icc = csc.createcompiler();

system.codedom.compiler.compilerparameters cplist = new system.codedom.compiler.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");

system.codedom.compiler.compilerresults cr = icc.compileassemblyfromdom(cplist, ccu);

if(true == cr.errors.haserrors)

{

system.text.stringbuilder sb = new system.text.stringbuilder();

foreach(system.codedom.compiler.compilererror ce in cr.errors)

{

sb.append(ce.tostring());

sb.append(system.environment.newline);

}

throw new exception(sb.tostring());

}

system.reflection.assembly assembly = cr.compiledassembly;

type t = assembly.gettype(@namespace+"."+classname,true,true);

object obj = activator.createinstance(t);

system.reflection.methodinfo mi = t.getmethod(methodname);

return mi.invoke(obj,args);

}

catch(exception ex)

{

throw new exception(ex.innerexception.message,new exception(ex.innerexception.stacktrace));

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 动态调用Webservice-.NET教程,Web Service开发
分享到: 更多 (0)

相关推荐

  • 暂无文章