2012-05-07 33 views
3

我正在使用globus工具包进行项目。在我的服务中,我有一个资源:一个字符串数组。我想从Android客户端获取此资源。我怎样才能做到这一点?我如何在wsdl文件中描述“字符串数组”类型? 谢谢。描述wsdl文件中的字符串数组

回答

2

我猜你正在寻找这个

<complexType name='ArrayOfString'> 
    <sequence> 
     <element name='item' type='xsd:string' maxOccurs='unbounded'/> 
    </sequence> 
</complexType> 

来源:http://www.activebpel.org/samples/samples-2/BPEL_Samples/Resources/Docs/arrays.html

UPDATE:

我做了使用NetBeans 7.0.1的测试。结果是这样的:

声明其接收一个String []参数的方法:

@WebMethod(operationName = "helloArray") 
public String helloArray(@WebParam(name = "name") String[] name) { 
    StringBuilder sb = new StringBuilder("Hello "); 
    if (name != null) { 
     for(int i = 0; i < name.length; i++) { 
      sb.append(name[i]); 
      if (i < (name.length - 1)) { 
       sb.append(" and "); 
      } 
     } 
    } 
    sb.append('!'); 
    return sb.toString(); 
} 

的WSDL生成用于我的方法的复杂类型字符串数组元素

<xs:complexType name="helloArray"> 
    <xs:sequence> 
     <xs:element name="name" type="xs:string" nillable="true" minOccurs="0" 
      maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

在客户端,IDE生成一个List<String>以消耗它:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "helloArray", propOrder = {"name"}) 
public class HelloArray { 

    @XmlElement(nillable = true) 
    protected List<String> name; 

    public List<String> getName() { 
     if (name == null) { 
      name = new ArrayList<String>(); 
     } 
     return this.name; 
    } 
} 

A找到一个方法来消耗

private String helloArray(java.util.List<java.lang.String> name) { 
    edu.home.wsclient.HelloWorldWS port = service.getHelloWorldWSPort(); 
    return port.helloArray(name); 
} 

我已经上传了两个项目in this address

+0

谢谢。现在,当我从客户端获得响应时,作为通用Java对象,并尝试将其转换为(String []),我得到一个ClassCastException。 –

+0

你看过XML响应,那里没有错误吗? –

+0

我也在验证wsdl:ArrayOfString被引用但未定义时得到一个异常! –

0

服务有XML召唤出多个孩子家长的标签,每一个与你的数组一个字符串值:

<parent> 
    <child>String 1</child> 
    <child>String 2</child> 
</parent> 

正确命名标签。

1

可以使用具有字符串元素(和更多的数据,如果你喜欢)的自定义类型与多样性> 1.

<xsd:sequence> 
    <xsd:element name="YourClass" type="pre:YourClass" maxOccurs="unbounded" minOccurs="0"> 
    </xsd:element> 
</xsd:sequence> 
+0

如何转换响应返回的对象?如果我尝试(String []),我得到一个ClassCastException。 –