Web Services 调用WSDL服务时出现异常

dwbf0jvd  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(358)

我希望使用Travelport Universal API来开发一个机票预订系统,所以我使用了Travelport Developers官方链接作为参考:
Travelport开发人员入门指南
如文件所述:
Travelport Universal API提供了一系列针对航空、酒店、汽车和铁路的旅行内容,包括辅助设备(可选服务)。它还提供了构建完整的旅行者、旅行社、分支和客户档案的功能。
为了能够发送请求和接收响应,我们应该请求一个30-Day Trial Credentials for Travelport Universal API,所以我已经请求了这个,我已经收到了我的凭据,凭据由许多内容组成:
1.通用API用户ID
1.通用API密码
1.供应商名称(ProviderCode)的分支代码(TargetBranch)

  1. URL
    我测试这个凭证,我确信他们是使用一个PHP文件从下面的链接工作:
    TravelPort Universal API - Ping Request with PHP
    我正在尝试使用eclipse在JAVA中运行Travelport API,我按照下面url中提到的步骤操作:
    Setting up to work with Universal API
    我遵循的配置步骤是:
    1.我已经将Apache CXF与Tomcat链接起来
    1.我已经使用此链接从GitHub导入了项目:
    Travelport/travelport-uapi-tutorial
    1.我已使用从Travelport Universal API 30天试用凭证电子邮件回复中收到的url编辑了WSDLService类中的ENDPOINT_PREFIX
    1.我使用WSDL生成了客户端类,并尝试调用服务,

但出现错误:

Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:150)
    at $Proxy48.service(Unknown Source)
    at com.travelport.service.system_v9_0.SystemPingPortType_SystemPingPort_Client.main(SystemPingPortType_SystemPingPort_Client.java:55)
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '404: Not Found' when communicating with http://localhost:8080/kestrel/SystemService
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.doProcessResponseCode(HTTPConduit.java:1600)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1607)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1551)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1348)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
    ... 2 more

有人能为我提供测试Travelport API所需的步骤,以便我能发送请求并从Travelport的真实的数据接收响应吗?

0h4hbjxa

0h4hbjxa1#

生成Java类后需要更改连接端点。在运行时,可以使用以下命令完成此操作:

String endpoint = "https://emea.universal-api.travelport.com/B2BGateway/connect/uAPI";
BindingProvider provider = (BindingProvider) port;
Map<String, Object> reqCtx = provider.getRequestContext();
String connUrl = endpoint.endsWith("/")
            ? endpoint + connUrlSuffix
            : endpoint + "/" + connUrlSuffix;
reqCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, connUrl);
0mkxixxg

0mkxixxg2#

似乎您尝试连接到端口8080上的localhost,但没有服务运行。

相关问题