在 wsdl 文件中描述字符串数组

Mat*_*eda 6 java wsdl globus-toolkit

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

Lui*_*oza 5

我猜你正在寻找这个

<complexType name='ArrayOfString'>
    <sequence>
        <element name='item' type='xsd:string' maxOccurs='unbounded'/>
    </sequence>
</complexType>
Run Code Online (Sandbox Code Playgroud)

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

更新:

我已经使用 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();
}
Run Code Online (Sandbox Code Playgroud)

WSDL 使用 String 数组元素为我的方法生成了一个复杂类型

<complexType name='ArrayOfString'>
    <sequence>
        <element name='item' type='xsd:string' maxOccurs='unbounded'/>
    </sequence>
</complexType>
Run Code Online (Sandbox Code Playgroud)

在客户端,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;
    }
}
Run Code Online (Sandbox Code Playgroud)

以及消费服务的方法

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

我已经在这个地址上传了两个项目