Java SOAP WebService:如何将字符串数组用作 WSDL 方法的输入?
Java SOAP WebService: how can I use as input an array of String for a method on a WSDL?
我正在开发 Java 1.6 版本的 WebService SOAP(客户基础设施的约束),我需要开发一种操作方法,将带有字符串和字符串数组的普通对象作为输入, 和 return 一个输出(经过一些阐述)。输入对象由字符串 codiceFiscale 组成,字符串数组是您在代码示例中看到的名为 classificazioni 的字段:
我在 WSDL 上遇到过这种情况:
<complexType name="VerificaClassiPFInputDTO">
<sequence>
<element name="codiceFiscale" nillable="true" type="xsd:string" />
<element name="classificazioni" type="xsd:string" nillable="true"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
这是我的 INPUT DTO(java 端):
public class VerificaClassiPFInputDTO implements Serializable {
private static final long serialVersionUID = -3933923831884051815L;
/**
* Codice Fiscale della PF
*/
private String codiceFiscale = "";
/**
* Array di classificazioni da processare sul codice fiscale passato
*/
private String[] classificazioni = null;
/**
* Costruttore default
*/
public VerificaClassiPFInputDTO() {
super();
}
public String getCodiceFiscale() {
return codiceFiscale;
}
public void setCodiceFiscale(String codiceFiscale) {
this.codiceFiscale = codiceFiscale;
}
public String[] getClassificazioni() {
return classificazioni;
}
public void setClassificazioni(String[] classificazioni) {
this.classificazioni = classificazioni;
}
那个 String[] 是我的数组。我部署WS的时候,在SOAPUI客户端,这个方法的情况是这样的
对我来说是正确的。我希望“0 on more”字符串作为该数组中该字段的输入。在这种情况下,数组中有三个字符串,另一个字符串 codiceFiscale.
即使在 IBM RAD Web Service Explorer 工具中,情况也是这样:
所以,对我来说没关系。但是,当我传递更多字符串(在数组中)时 只有最后一个被处理。
在代码中,当我处理输入时,我总是获得 一个长度为 1 的字符串数组,最后一个。
那么,怎么了?
如何在 WSDL、DTO 等中映射该类型的输入?为什么会这样?
如果我在 DTO 中切换类型
from String[] to List<String> classificazioni
那个操作不行,在运行时说格式不匹配类型,我尝试调用方法。
有人可以帮助我吗?如果我必须更改 WSDL 中的映射,并相应地更改 DTO,那不是问题,但如何更改?
为了获得那种输入,我应该将什么作为 complextype 放入 WSDL,然后放入 DTO?
请帮帮我....我要疯了:(
我想我和我的同事们已经解决了。你必须这样写setClassificazioni
方法:
添加其他两种方法
public String getClassificazioni(int i){
return classificazioni[i];
}
public void setClassificazioni(int i, String classificazione){
this.classificazioni[i] = classificazione;
}
重要:
它适用于所有类型的数组,也适用于非 java 原始类型的数组。我不知道它是否也适用于多维数组(自适应方法)。
我正在开发 Java 1.6 版本的 WebService SOAP(客户基础设施的约束),我需要开发一种操作方法,将带有字符串和字符串数组的普通对象作为输入, 和 return 一个输出(经过一些阐述)。输入对象由字符串 codiceFiscale 组成,字符串数组是您在代码示例中看到的名为 classificazioni 的字段:
我在 WSDL 上遇到过这种情况:
<complexType name="VerificaClassiPFInputDTO">
<sequence>
<element name="codiceFiscale" nillable="true" type="xsd:string" />
<element name="classificazioni" type="xsd:string" nillable="true"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
这是我的 INPUT DTO(java 端):
public class VerificaClassiPFInputDTO implements Serializable {
private static final long serialVersionUID = -3933923831884051815L;
/**
* Codice Fiscale della PF
*/
private String codiceFiscale = "";
/**
* Array di classificazioni da processare sul codice fiscale passato
*/
private String[] classificazioni = null;
/**
* Costruttore default
*/
public VerificaClassiPFInputDTO() {
super();
}
public String getCodiceFiscale() {
return codiceFiscale;
}
public void setCodiceFiscale(String codiceFiscale) {
this.codiceFiscale = codiceFiscale;
}
public String[] getClassificazioni() {
return classificazioni;
}
public void setClassificazioni(String[] classificazioni) {
this.classificazioni = classificazioni;
}
那个 String[] 是我的数组。我部署WS的时候,在SOAPUI客户端,这个方法的情况是这样的
对我来说是正确的。我希望“0 on more”字符串作为该数组中该字段的输入。在这种情况下,数组中有三个字符串,另一个字符串 codiceFiscale.
即使在 IBM RAD Web Service Explorer 工具中,情况也是这样:
所以,对我来说没关系。但是,当我传递更多字符串(在数组中)时 只有最后一个被处理。
在代码中,当我处理输入时,我总是获得 一个长度为 1 的字符串数组,最后一个。
那么,怎么了? 如何在 WSDL、DTO 等中映射该类型的输入?为什么会这样?
如果我在 DTO 中切换类型
from String[] to List<String> classificazioni
那个操作不行,在运行时说格式不匹配类型,我尝试调用方法。
有人可以帮助我吗?如果我必须更改 WSDL 中的映射,并相应地更改 DTO,那不是问题,但如何更改?
为了获得那种输入,我应该将什么作为 complextype 放入 WSDL,然后放入 DTO?
请帮帮我....我要疯了:(
我想我和我的同事们已经解决了。你必须这样写setClassificazioni
方法:
添加其他两种方法
public String getClassificazioni(int i){
return classificazioni[i];
}
public void setClassificazioni(int i, String classificazione){
this.classificazioni[i] = classificazione;
}
重要: 它适用于所有类型的数组,也适用于非 java 原始类型的数组。我不知道它是否也适用于多维数组(自适应方法)。