Describing a string array in a wsdl file

前提是你 提交于 2019-12-19 09:07:55

问题


I'm using the globus toolkit for a project. In my service i have a resource: a string array. I want to get this resource from an Android client. How can I do that? How can I describe in the wsdl file the type "array of string"? Thank you.


回答1:


I guess you're looking for this

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

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

UPDATE:

I've done a test using NetBeans 7.0.1. The results were this:

Declare a method that receives a String[] parameter:

@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();
}

The WSDL generated a complex type for my method with a String array element

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

In the client, the IDE generated a List<String> to consume it:

@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;
    }
}

And a method to consume the service

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

I've uploaded both projects in this address




回答2:


You can use a custom type which has a String element (and more data, if you'd like) with multiplicity > 1.

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



回答3:


Have the XML call out a parent tag with multiple children, each with one string value from your array:

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

Name the tags appropriately.



来源:https://stackoverflow.com/questions/10483318/describing-a-string-array-in-a-wsdl-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!