或者是这样:<testResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <Time xsi:type="xsd:string" >11:04:375</Time>
   <Random xsi:type="xsd:string" >random</Random>
</testResponse>去掉了关于命名空间的定义

解决方案 »

  1.   

    不是名字空间的原因。如果另一端是非Java语言,参数名字要取和另一端具体的名字,否则可能会出错。将server-config中加入方法的说明即可:<operation name="test" soapAction="">
        <parameter mode="out" name="Time"/>
        <parameter mode="out" name="Random"/>
    </operation>
      

  2.   

    谢谢楼上大虾!
    请问在server-config里面关于operation的相关配置说明在哪里可以看得到?现在还有一点小问题:
    返回的参数名称已经定义好了,如何继续配置参数的返回类型?现在默认的是:
    <Time xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">timestampabc</Time>
    返回的参数类型怎么是soapenc:string的呢?  我想返回的是xsd:string的该如何配置?另外,昨天还有一个小问题:我只想返回两个参数:random,time,但是现在返回的却多了一个参数,我给你看看服务器段代码:
    public String test(StringHolder timestamp, StringHolder random)
    {
    timestamp.value = "timestampabc";
    random.value = "abcrandom";
    return random.value;       
    }因为我使用了return random.value,导致返回的soap消息里面多了这样一个返回参数:
    <testReturn xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">abcrandom</testReturn>我不想这样。我就必须删除return.....但是如果我删除return,服务器段的文件就无法编译通过啊。如果我的这个方法是void没有返回,那也会出错。大虾帮忙看看,这个问题解决了,俺就可以快快乐乐过中秋了,也祝大家所有人中秋愉快,合家幸福!
      

  3.   

    还有一个问题:
    如果我要在test方法里面增加一个参数,如:
    public String test(StringHolder timestamp, StringHolder random,String Username)客户端在访问这个接口的时候需要输入Username。那么我的这个test方法该如何写?我尝试过如以上的方法写,并且在客户端注明了访问时要带上一个username过来。但是总是报错,提示:The OperationDesc for test was not synchronized to a method of test.
      

  4.   

    感觉你的思路有点混乱。要做好一个RPC方式的Web Service,应该首先定义好接口。定接口时可以征求客户端的意见。不是象你现在这样客户端仿佛做好了,服务端围着客户端打转转,应该是服务端做好后向客户端提供WSDL文件。客户端根据这个WSDL文件自己编写代码调用服务端的接口。回到你的这个接口的问题。
    返回值可以为空,也可以不为空,一般如果参数返回值的,接口方法的返回值可以设为一个整数,表示这次调用动作本身是否成功。
    另外,如果需要校验客户端的身份,在方法本身里传用户名和密码不是一个好的方案,因为一个Web Service可能不止一个接口,验证信息写在方法里十分冗余。应该在更高一层验证,比如可以用HTTP Basic Authentication验证,或者为了提高效率单独做一个方法login() 保存Session等。
      

  5.   

    谢谢!可是俺的工作是必须围绕客户端转...,俺的客户端不是PC,是其他设备。客户端的身份认证,俺也经过很多尝试最终确定不能用Session或者Bassic Authentication,这不管了。现在唯一的问题是函数返回值的问题。如果我返回一个整数,的确可以用来表示是否返回成功,但是这样会再返回的soap消息中多增加了一条返回message的参数。俺们的客户端很弱智的,多一条,少一条,都可能造成异常。所以返回的数量一定是我们先定好了。
    就拿这个例子来看:
    public String test(StringHolder timestamp, StringHolder random)
    {
    timestamp.value = "timestampabc";
    random.value = "abcrandom";
    return random.value;       
    }我必须指明一个方法类型,可以String,也可以是你说的int,但最后必须要有一个return。
    那我这个retrun该什么呢?我无论写了什么,都会在返回的message中多增加一条返回参数(return得值)
    我该如何做?老大
      

  6.   

    大虾能否告诉我,server-config的配置说明,相关文档有没有。我去了axis的网站察看了很多文档,就是找不到我想要得。好伤心,好难过。都整整2天了,明天就是周六,我该怎么办。
      

  7.   

    晕。你把方法设为空不结了吗?public void test(...)