我传的数组是String[]类型的。。

解决方案 »

  1.   

    可能是Delphi7和VB6.0类型不兼容
      

  2.   

    要在部署文件中加入序列化描述!!!<typeMapping
            xmlns:ns="http://soapinterop.org/xsd"
            qname="ns:strArray"
            type="java:java.lang.String[]" 
    serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" 
    deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    />
    <operation name="sayStrArray" returnQName="return" 
    returnType="RTypeNS:strArray" xmlns:RTypeNS="http://soapinterop.org/xsd" >        
    </operation>
      

  3.   

    请问这个部署文件是指的哪个文件,是D:\soft_setup\Apache Tomcat 4.0\webapps\axis\WEB-INF\web.xml 这个文件么?
      

  4.   

    部署文件,是你的web service在部署到apach axis中时要写的一个xml文档,
    利用
    java -Djava.ext.dirs=%AXIS_LIB% org.apache.axis.client.AdminClient deploy.wsdd命令部署到apache axis中.
    部署文件就是deploy.wsdd
    全部内容如下:<deployment xmlns="http://xml.apache.org/axis/wsdd/" 
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="axisService" provider="java:RPC">
     <parameter name="className" value="axisSvc"/>
     <parameter name="allowedMethods" value="*"/><typeMapping
            xmlns:ns="http://soapinterop.org/xsd"
            qname="ns:strArray"
            type="java:java.lang.String[]" 
    serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" 
    deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    />
    <operation name="sayStrArray" returnQName="return" 
    returnType="RTypeNS:strArray" xmlns:RTypeNS="http://soapinterop.org/xsd" >        
    </operation>
    </service>
     </deployment>
      

  5.   

    楼上的做法是不必要的。数组是默认支持的,不需要注册。
    只有复杂的或自定义的对象本身才需要注册。
    也就是说, 象String[]这样的数据直接传就行了。如果出错肯定是代码里其他的问题。
      

  6.   

    作为参数传也没有问题,我试过的。总之 Java 这边是没有任何问题的。
    你用Delphi和.NET客户端试试看。
      

  7.   

    usabcd(9号公路上的3名共军) ,您好:   我使用的是VB6.0测试的,当以二维数组作为参数传递时,有问题啊。。你是用VB6.0测试的么?    热烈的期待!!小叶
      

  8.   

    补充说明:   将二维数组作为参数传递时,我已经使用delphi7、java调试通过了,但我现在使用的是vb6.0,怎么调试也不通。。请急救支援!万分感谢。。兄弟,你在哪啊。。我请你吃饭。。或者我给你汇钱过去,你自己喝杯咖啡吧。。小叶
      

  9.   

    我K,有这么夸张吗?
    你把VB发出的SOAP信息打出来我看看。
      

  10.   

    我估计有可能是VB6用的SOAP规范太老了,不支持2维数组,因此你可能要用.NET来访问。
      

  11.   

    我猜也是这个问题。。我把打印的信息截图传到网上了。。你可以下载看。。也可以看下面的文字:
    错误信息:VB6调用时,发生的错误信息是:
    实时错误'-2147024809(80070057)';
    SoapMapper:Putting data into SoapMapper string failed HRESULT=0x80070057:参数错误。
    -SoapMapper:Saving Soapmapper in0 failed HRESULT=0X80070057:参数错误。
    -Client:unspecified client error.HRESULT=0x80070057:参数错误。错误信息截图:
    http://www.ediom.net/game/temp_pic/error_vb.gif
      

  12.   

    这实际上是一个策略问题。
    象你说的这种情况,应该采用传递SOAP封装xml消息的方式。
    理论上SOAP是支持RPC 的,但每种语言的SDK对SOAP-RPC的支持程度不同。SOAP标准也还在发展。你现在试了java和delphi,还有很多很多的客户端语言你都没试,你也没有精力也没必要去个个试到。
    如果以后有新的需求,你的接口还得不断不断变化。测试工作量巨大。
    直接传递xml消息那就简单了。你只要先定好xml的格式就行了。其他的事情客户端自己处理,不用你自己去费神了。以后如果有新的需求,你只要定好xml规范让客户端知道就行了。不用改接口。
      

  13.   

    VB  6.0 好像要装MS 的一个什么插件才行..看一下你的那个插件的版本是不是最新的...