2012-05-07 32 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。 –