我一直在寻找使用Travelport Universal API开发机票预订系统的方法,因此我使用了Travelport Developers的官方链接作为参考:

Getting Started for Travelport Developers

如文档所述:


  Travelport Universal API为航空,酒店,汽车和铁路提供了一系列旅行内容,包括辅助设施(可选服务)。它还提供了构建完整的差旅人员,代理商,分支机构和帐户资料的功能。


为了能够发送请求和接收响应,我们应该请求一个30-Day Trial Credentials for Travelport Universal API,所以我已经要求了这个并且我已经收到了我的凭据,该凭据由许多方面组成:

 通用API用户ID

 通用API密码

 ProviderName(ProviderCode)的分支代码(TargetBranch)

 网址

我测试了此凭据,并且我确信它们正在使用来自以下链接的php文件:

TravelPort Universal API - Ping Request with PHP

我正在尝试使用Eclipse在JAVA中运行Travelport API,并且按照以下网址中提到的步骤进行操作:

Setting up to work with Universal API

我遵循的配置步骤是:

 我已经将Apache CXF与Tomcat链接了

 我已经使用以下链接从GitHub导入了项目:

Travelport/travelport-uapi-tutorial

 我已使用从Travelport Universal API电子邮件的30天试用证书获得的URL编辑了WSDLService类中的ENDPOINT_PREFIX。

 我使用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的真实数据发送请求并接收响应吗?

最佳答案

生成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);

10-08 18:16