【问题标题】:Apache CXF web service doesn't return string arrayApache CXF Web 服务不返回字符串数组
【发布时间】:2013-07-29 10:55:07
【问题描述】:

我是 Java Web 服务编程的新手,这个问题可能看起来很基础。但我找不到问题。

我使用 Eclipse 为 Tomcat 6.0.37 开发了一个 Apache CXF(v 2.7.6) 网络服务。 基本上,我创建了一个动态 web 项目,创建了 webservice 类并从该类创建了 webservice(eclipse 生成了其余的,包括 wsdl 和 xsd)。一切正常,除非我尝试返回字符串数组。 这是我的方法

@WebMethod(action="getFriends")
    public String[] getFriends(String u, String p){
        return new String[] {"item 1","item 2","item 3"};
    }

响应类型定义

<xs:complexType name="getFriendsResponse">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

这是返回的消息

信息:出站消息

ID:34 编码:UTF-8 内容类型:文本/xml 标头:{} 有效载荷:

如您所见,没有偶数返回部分。知道有什么问题吗?

我在这个项目中使用 Windows 7、Eclipse Kepler 和 JDK6。

【问题讨论】:

    标签: java web-services soap cxf


    【解决方案1】:

    无论我记得什么它都行不通,因为您无法将数组解析为 HTTP 响应中的纯文本。

    试试这两种方法 - 1)将方法的返回类型更改为String,然后返回这样的字符串

     return Arrays.toString(new String[] {"item 1","item 2","item 3"});
    

    2) 你可以改变列表的返回类型,返回一个像这样的列表 -

    return Arrays.asList(new String[] {"item 1","item 2","item 3"});
    

    谢谢

    【讨论】:

    • 嗨。谢谢回复。我还考虑将数组转换为字符串,然后在客户端再次转换为数组。但奇怪的是,在复杂类型上,Eclipse 在生成 web 服务时会显示错误。但是对于 String[] 它生成时没有任何错误。现在我会采用这个解决方案,谢谢。
    • 您在说什么错误“Eclipse 在生成 web 服务时显示错误”?如果以上回答了您的问题,请将其标记为已回答,以便帮助其他有同样问题的访问者。 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多