网上常见的方法都试过了,无法调用,而且我直接在程序中添加Web引用,静态调用的话,调出来的方法的参数发生变话,比如:Java那变的方法是 Print(string aa,string bb,string cc),我引用后显示放法的参数变成Print(Print print ).
求高手帮忙解答:如下是我Web引用:
private WebReference.LsxJkFromJl2LsxServiceBinding service;s
ervice = new WebReference.LsxJkFromJl2LsxServiceBinding();  
WebReference.SetBox setBox = new WebReference.SetBox();
                    setBox.in0 = tranCode;
                    setBox.in1 = loginName;
                    setBox.in2 = loginIP;
                    setBox.in3 = XMLOperate.SetBox_Para(tranCode, factory, taskId, lsyerNo, isCheck).ToString();                    
                    object returnXml = service.SetBox(setBox).out1;
private WebReference.LsxJkFromJl2LsxServiceBinding service;
这样写可以调用,但动态的话,就不行了,我用下面的方法会提示参数个数不对,其实也就是上面所说的,原来的几个参数被合并成一个类的对象了
private const string CODE_NAMESPACE = "Beyondbit.WebServiceAgent.Dynamic";
        /// <summary>
        /// webservice(java)
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="methodName">函数名</param>
        /// <param name="args">参数列表</param>
        /// <returns></returns>
        public static object WebServiceAgent_AXIS(string url, string methodName, params object[] args)
        {
            Type agentType;
            object agent = new object();
            //XmlTextReader reader = new XmlTextReader(url + "?wsdl");
            XmlTextReader reader = new XmlTextReader(url);            //XmlDocument doc = new XmlDocument();
            //doc.LoadXml(reader.ToString());
            //XmlNodeList nodeList = doc.ChildNodes;
            //创建和格式化 WSDL 文档
            ServiceDescription sd = ServiceDescription.Read(reader);
            //创建客户端代理代理类
            ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
            sdi.AddServiceDescription(sd, null, null);
            //使用 CodeDom 编译客户端代理类
            CodeNamespace cn = new CodeNamespace(CODE_NAMESPACE);
            CodeCompileUnit ccu = new CodeCompileUnit();
            ccu.Namespaces.Add(cn);
            sdi.Import(cn, ccu);
            Microsoft.CSharp.CSharpCodeProvider icc = new Microsoft.CSharp.CSharpCodeProvider();
            CompilerParameters cp = new CompilerParameters();
            CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);
            agentType = cr.CompiledAssembly.GetTypes()[0];
            agent = Activator.CreateInstance(agentType);                                  MethodInfo mi = agentType.GetMethod(methodName);
            //ParameterInfo[] pinfo= mi.GetParameters();
            //Type ts = pinfo[0].GetType();            args = new object[] { args };
            return mi.Invoke(agent,args);
        }最后是java webservice 的wsdl<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns: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:import location="/TJDL/LsxJkFromJl2LsxService?wsdl=com/dowoo/tjjl/jkgl/LsxJkFromJl2Lsx.wsdl" namespace="http://www.primeton.com/LsxJkFromJl2LsxService"> </wsdl:import> -<wsdl:binding name="LsxJkFromJl2LsxServiceBinding" type="tns:LsxJkFromJl2LsxService"> <soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> -<wsdl:operation name="SetCheckNotice"> <soap11:operation soapAction=""/> -<wsdl:input name="SetCheckNotice"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetCheckNoticeResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="SetResultNotice"> <soap11:operation soapAction=""/> -<wsdl:input name="SetResultNotice"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetResultNoticeResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="SetBoxNotice"> <soap11:operation soapAction=""/> -<wsdl:input name="SetBoxNotice"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetBoxNoticeResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="GetDetectOperationResult"> <soap11:operation soapAction=""/> -<wsdl:input name="GetDetectOperationResult"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="GetDetectOperationResultResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="SetCheckErr"> <soap11:operation soapAction=""/> -<wsdl:input name="SetCheckErr"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetCheckErrResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="SetBox"> <soap11:operation soapAction=""/> -<wsdl:input name="SetBox"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetBoxResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> -<wsdl:operation name="SetUseNotice"> <soap11:operation soapAction=""/> -<wsdl:input name="SetUseNotice"> <soap11:body use="literal"/> </wsdl:input> -<wsdl:output name="SetUseNoticeResponse"> <soap11:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> -<wsdl:service name="LsxJkFromJl2LsxServiceService"> -<wsdl:port name="LsxJkFromJl2LsxServicePort" binding="tns:LsxJkFromJl2LsxServiceBinding"> <soap11:address location="http://192.168.0.189:8080/TJDL/LsxJkFromJl2LsxService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>