C# 动态调用 Java webservice

问题描述

网上常见的方法都试过了,无法调用,而且我直接在程序中添加Web引用,静态调用的话,调出来的方法的参数发生变话,比如:Java那变的方法是Print(stringaa,stringbb,stringcc),我引用后显示放法的参数变成Print(Printprint).求高手帮忙解答:如下是我Web引用:privateWebReference.LsxJkFromJl2LsxServiceBindingservice;service=newWebReference.LsxJkFromJl2LsxServiceBinding();WebReference.SetBoxsetBox=newWebReference.SetBox();setBox.in0=tranCode;setBox.in1=loginName;setBox.in2=loginIP;setBox.in3=XMLOperate.SetBox_Para(tranCode,factory,taskId,lsyerNo,isCheck).ToString();objectreturnXml=service.SetBox(setBox).out1;privateWebReference.LsxJkFromJl2LsxServiceBindingservice;这样写可以调用,但动态的话,就不行了,我用下面的方法会提示参数个数不对,其实也就是上面所说的,原来的几个参数被合并成一个类的对象了privateconststringCODE_NAMESPACE="Beyondbit.WebServiceAgent.Dynamic";///<summary>///webservice(java)///</summary>///<paramname="url">地址</param>///<paramname="methodName">函数名</param>///<paramname="args">参数列表</param>///<returns></returns>publicstaticobjectWebServiceAgent_AXIS(stringurl,stringmethodName,paramsobject[]args){TypeagentType;objectagent=newobject();//XmlTextReaderreader=newXmlTextReader(url+"?wsdl");XmlTextReaderreader=newXmlTextReader(url);//XmlDocumentdoc=newXmlDocument();//doc.LoadXml(reader.ToString());//XmlNodeListnodeList=doc.ChildNodes;//创建和格式化WSDL文档ServiceDescriptionsd=ServiceDescription.Read(reader);//创建客户端代理代理类ServiceDescriptionImportersdi=newServiceDescriptionImporter();sdi.AddServiceDescription(sd,null,null);//使用CodeDom编译客户端代理类CodeNamespacecn=newCodeNamespace(CODE_NAMESPACE);CodeCompileUnitccu=newCodeCompileUnit();ccu.Namespaces.Add(cn);sdi.Import(cn,ccu);Microsoft.CSharp.CSharpCodeProvidericc=newMicrosoft.CSharp.CSharpCodeProvider();CompilerParameterscp=newCompilerParameters();CompilerResultscr=icc.CompileAssemblyFromDom(cp,ccu);agentType=cr.CompiledAssembly.GetTypes()[0];agent=Activator.CreateInstance(agentType);MethodInfomi=agentType.GetMethod(methodName);//ParameterInfo[]pinfo=mi.GetParameters();//Typets=pinfo[0].GetType();args=newobject[]{args};returnmi.Invoke(agent,args);}最后是javawebservice的wsdl<?xmlversion="1.0"encoding="UTF-8"?>-<wsdl:definitionsxmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:ns0="http://www.primeton.com/LsxJkFromJl2LsxService"xmlns:tns="http://www.primeton.com/LsxJkFromJl2LsxService"targetNamespace="http://www.primeton.com/LsxJkFromJl2LsxService"name="com.dowoo.tjjl.jkgl.LsxJkFromJl2LsxComposite.LsxJkFromJl2LsxComponent.LsxJkFromJl2LsxService"><wsdl:importlocation="/TJDL/LsxJkFromJl2LsxService?wsdl=com/dowoo/tjjl/jkgl/LsxJkFromJl2Lsx.wsdl"namespace="http://www.primeton.com/LsxJkFromJl2LsxService"></wsdl:import>-<wsdl:bindingname="LsxJkFromJl2LsxServiceBinding"type="tns:LsxJkFromJl2LsxService"><soap11:bindingtransport="http://schemas.xmlsoap.org/soap/http"style="document"/>-<wsdl:operationname="SetCheckNotice"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetCheckNotice"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetCheckNoticeResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="SetResultNotice"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetResultNotice"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetResultNoticeResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="SetBoxNotice"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetBoxNotice"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetBoxNoticeResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="GetDetectOperationResult"><soap11:operationsoapAction=""/>-<wsdl:inputname="GetDetectOperationResult"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="GetDetectOperationResultResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="SetCheckErr"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetCheckErr"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetCheckErrResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="SetBox"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetBox"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetBoxResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation>-<wsdl:operationname="SetUseNotice"><soap11:operationsoapAction=""/>-<wsdl:inputname="SetUseNotice"><soap11:bodyuse="literal"/></wsdl:input>-<wsdl:outputname="SetUseNoticeResponse"><soap11:bodyuse="literal"/></wsdl:output></wsdl:operation></wsdl:binding>-<wsdl:servicename="LsxJkFromJl2LsxServiceService">-<wsdl:portname="LsxJkFromJl2LsxServicePort"binding="tns:LsxJkFromJl2LsxServiceBinding"><soap11:addresslocation="http://192.168.0.189:8080/TJDL/LsxJkFromJl2LsxService"/></wsdl:port></wsdl:service></wsdl:definitions>

解决方案

解决方案二:
没调用过,理论上应该可以,理论上应该所有的参数都是基本类型的应该没问题,例如int,string。等高手解决...

时间: 2024-08-01 04:33:04

C# 动态调用 Java webservice的相关文章

soap-如何通过php调用java webservice方式调用海康监控云控制?

问题描述 如何通过php调用java webservice方式调用海康监控云控制? 因项目需要在页面通过webservice调用云控制接口,而我使用php语言和nusoap库,通过soap调用,但问题是无法控制监控画面上下左右转动,请大师们赐教下小弟!

c# 客户端 调用 java Webservice 实现图片上传功能

问题描述 c# 客户端 调用 java Webservice 实现图片上传功能 no SOAPAction header c#端添加服务引用 生成实体类 直接调用webservice图片上传方法 结果报错**no SOAPAction header** 解决方案 有没有大神 来帮帮忙 解决方案二: 参考这个:http://blog.csdn.net/wxyong3/article/details/38727503

C#.Net 如何动态指定URL调用 JAVA WebService

问题描述 现在地址不明确.无法通过添加Web引用来调用.如何根据参数地址动态的调用JavaXFireWebService 解决方案 解决方案二:有测试用的webservice么如果不能添加web引用的话是调用不了的添加引用后项目会根据webservice生成一些方法声明什么的只要webservice方法不改变可以更换webservice地址如果方法改变了就得刷新web引用了生成对象后可以指定webservice的url这个地址可以设置在config里面了如果都没法引用就不能生成webservic

解决.Net调用Java webservice访问被拒绝的方案

最近用.net调用java写的webservice时,出现了一个奇怪的问题:Webservice服务部署在本机,外面机器的web引用可以正确添加,但调试运行时,就出现"目标机器积极拒绝(target machine actively refused)"错误!真是奇怪了. 最近用.net调用java写的webservice时,出现了一个奇怪的问题:Webservice服务部署在本机,外面机器的web引用可以正确添加,但调试运行时,就出现"目标机器积极拒绝(target mach

急急急急急急急急急!!!!C#动态调用java的带身份验证的webservice问题。

问题描述 求助一下,我现在需要在.net环境下面访问java下写的webservice服务,http://.....:7801/services/org/DepartmentManager?wsdl,而且这个服务还有<soapenv:Header><auth:authenticationxmlns:auth="http://gd.chinamobile.com//authentication"><auth:sysname>admin</auth

java调用webservice:php调用java webservice

header("content-type: text/html; charset=utf-8");require_once("lib/nusoap.php");// 要访问的webservice路径$nusoapwsdl="http://localhost:8080/mywebservice/services/sendmobliemsg?wsdl";// 生成客户端对象$client = new soapclient($nusoapwsdl, t

PHP5 在调用 JAVA WebService 时遇到的各种问题解决方法

 开始gank. 服务端: Spring3.0.5+CXF2.4,JDK1.6 "应该是"自动生成的wsdl文件<服务端不是我们的> 客户端: PHP5.1.3 碰见的第一个问题: SOAP-ERROR: Encoding: object has no 'id' property 但是API文档上说不需要id,查看wsdl文件内容 <xs:complexType name="seal"><xs:sequence><xs:el

c# WSE3.0 证书加密 调用java webservice

问题描述 我通过Keystore生成了server.jksclient.jks并把server.jks导出的cer导入到client.jks把client.jks导出的cer导入到server.jks,然后通过JKS2PFX工具成功把server.jks与client.jks转为.net下的pfx文件.然后在vs2010中操作图形界面配置客户端,如下图:在clientcertificateselect面板可以选择证书在servercertificateselect面板没有证书可以选择但我是安装了

C#调用java webservice接口问题

问题描述 Util中代码:publicstaticvoidSetCertificatePolicy(){ServicePointManager.ServerCertificateValidationCallback+=RemoteCertificateValidate;}privatestaticboolRemoteCertificateValidate(objectsender,X509Certificatecert,X509Chainchain,SslPolicyErrorserror){S