我被要求重建我们的客户门户网站,使用gwt并使用服务器上设置的各种Web服务连接到我们的数据。
我生成了所有代理类,使用了WSDL和Jax-WS / wsimport实用程序,但是当我进行以下调用时:
ReportingApiSoap soap = api.getReportingApiSoap();
ArrayOfReport returnValues = soap.getReports(serverCredentials, true);
我的returnValues对象为null。我知道web服务本身是有效的,因为我能够使用我现在传递的相同参数来测试它。
我以前在向网络服务发送数据时遇到了一些问题;结果是命名空间没有按需要排队。我怀疑这里发生了类似的事情,但还没弄清楚到底是什么。
以前遇到过类似事情的人?或者,如果不知道如何检查原始xml我正在退出webservice调用?这样我就可以追溯这个问题了。
-Ian
我的凭证对象:
public class ApiCredentials {
@XmlElement(name = "Id", namespace="http://mycompany.com")
protected String id;
@XmlElement(name = "Login", namespace="http://mycompany.com")
protected String login;
@XmlElement(name = "Password", namespace="http://mycompany.com")
protected String password;
...
}
ArrayofReport:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfReport", propOrder = {
"report"
})
public class ArrayOfReport {
@XmlElement(name = "Report", nillable = true)
protected List<Report> report;
public List<Report> getReport() {
if (report == null) {
report = new ArrayList<Report>();
}
return this.report;
}
}
Webservice电话:
@WebMethod(operationName = "GetReports", action = "http://mycompany.com/GetReports")
@WebResult(name = "GetReportsResult", targetNamespace = "http://mycompany.com")
@RequestWrapper(localName = "GetReports", targetNamespace = "http://mycompany.com", className = "com.mycompany.customerportal.server.GetReports")
@ResponseWrapper(localName = "GetReportsResponse", targetNamespace = "http://mycompany.com", className = "com.mycompany.customerportal.server.GetReportsResponse")
public ArrayOfReport getReports(
@WebParam(name = "credentials", targetNamespace = "http://mycompany.com")
ApiCredentials credentials,
@WebParam(name = "includeFields", targetNamespace = "http://mycompany.com")
boolean includeFields);