问题描述
网上常见的方法都试过了,无法调用,而且我直接在程序中添加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。等高手解决...