2012-05-07 5 views
3

私はプロジェクトにglobusツールキットを使用しています。私のサービスでは、私はリソースを持っています:文字列配列。私はこのリソースをAndroidクライアントから取得したいと考えています。どうやってやるの?どのようにwsdlファイルに "string of array"という型を記述できますか? ありがとうございます。wsdlファイルに文字列配列を記述する

答えて

2

私はあなたがこの

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

ソースを探していると思います:私は、NetBeans 7.0.1を使用してテストを行ってきた

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

UPDATE。

の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> 

を私の方法は複合型を生成された結果は、このましたクライアントは、それを消費するために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 ND私は両方のプロジェクトin this address

+0

で文字列の要素を持つカスタムタイプを使用することができ、ありがとうございました。クライアントからの応答を一般的なJavaオブジェクトとして取得し、それを(String [])にキャストしようとすると、ClassCastExceptionが発生します。 –

+0

XMLレスポンスを見たことがありますか?エラーはありませんか? –

+0

wsdl:ArrayOfStringが参照されていても定義されていないことを検証する際に例外が発生します。 –

0

をアップロードしたサービス

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

を消費する方法は、XMLは、複数の子どもたちと親タグを呼び出すあなたの配列から1つの文字列値を持つそれぞれを持っている:

<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を取得します。 –

関連する問題