gpt4 book ai didi

Java 使用 Web 服务

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:00 24 4
gpt4 key购买 nike

我被要求重建我们的客户门户,使用 gwt 并使用服务器上设置的各种 Web 服务连接到我们的数据。

我使用 WSDL 和 Jax-WS/wsimport 实用程序生成了所有代理类,但是当我进行以下调用时:

ReportingApiSoap soap = api.getReportingApiSoap();      
ArrayOfReport returnValues = soap.getReports(serverCredentials, true);

我的 returnValues 对象为 null。我知道 Web 服务本身可以工作,因为我能够使用现在传递的相同参数来测试它。

我之前在向网络服务发送数据时遇到了一些问题;事实证明,命名空间没有按需要排列。我怀疑这里正在发生类似的事情,但还无法弄清楚是什么。

有人遇到过类似的事情吗?或者,如果不知道如何检查我从网络服务调用中获取的原始 xml?这样我就可以进一步跟踪问题。

-伊恩

我的凭据对象:

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;

...
}

报表数组:

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

}

网络服务调用:

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

最佳答案

我建议创建一个模拟 Web 服务(例如使用 soapUI )。这将允许您根据 WSDL 查看并验证请求 XML。您可以剪切粘贴/编辑对客户端的模拟响应以查看效果。

JAX-WS 实现非常多,因此任何其他选项都取决于运行时中的客户端技术。我将确保启用验证(例如,这可以实现为 feature )。

关于Java 使用 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com