1

我正在寻找使用Travelport Universal API来开发航班预订系统,所以我使用了这个 Travelport Developers 官方链接作为参考:

Travelport 开发人员入门

如文档所述:

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

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

  • 通用 API 用户 ID

  • 通用 API 密码

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

  • 网址

    我测试了这个凭据,我确信他们正在使用来自以下链接的 php 文件:

    TravelPort 通用 API - 使用 PHP 的 Ping 请求

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

    设置为使用通用 API

    我遵循的配置步骤是:

  • 我已将 Apache CXF 与 Tomcat 链接

  • 我已使用此链接从 GitHub 导入项目:

    Travelport/travelport-uapi-tutorial

  • 我已经编辑了 WSDLService 类中的 ENDPOINT_PREFIX,其中包含从 Travelport Universal API 电子邮件响应的 30 天试用凭证中收到的 url

  • 我使用 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 真实数据的响应吗?

  • 4

    2 回答 2

    0

    您需要在生成 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);
    
    于 2020-03-18T14:15:46.287 回答
    -1

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

    于 2016-03-12T18:23:20.217 回答