Travelport伽利略python SoapClien

2024-10-01 09:30:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要为Travelport Galileo uAPI开发pythonsoapclient。在

这是Travelport Universal API 30天试用证书

通用API用户ID:Universal API/uAPI2514620686-0edbb8e4

通用API密码:D54HWfck9nRZNPbXmpzCGwc95

伽利略(1G)的分支代码:P7004130

网址:https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/

这是伽利略文档中的引述

HTTP标头

HTTP标头包括:

SOAP终结点,其变化取决于: 地理区域。 请求的服务。在前面的示例中,HotelService用于端点;但是,服务名称会根据请求事务进行修改。 gzip压缩,这是可选的,但强烈建议使用。要在响应中接受gzip压缩,请在头中指定“accept-Encoding:gzip,deflate”。在

授权,它遵循标准的基本授权模式。 “Authorization:Basic”后面的文本可以使用base64编码。大多数编程语言都支持此功能。 授权凭证的语法必须在Travelport分配的用户名和密码之前包含前缀“Universal API/”。 后https://americas.universal-api.pp.travelport.com/ B2BGateway/connect/uAPI/HotelService HTTP/2.0

接受编码:gzip,deflate

内容类型:text/xml;字符集=UTF-8

SOAPAction:“

授权:基本UniversalAPI/用户名:密码在

内容长度:长度

这是我的python代码

import urllib2
import base64
import suds

class HTTPSudsPreprocessor(urllib2.BaseHandler):

    def http_request(self, req):
        message = \
        """
            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:air="http://www.travelport.com/schema/air_v16_0" xmlns:com="http://www.travelport.com/schema/common_v13_0" --> 
            <soapenv:header> 
            <soapenv:body> 
            <air:availabilitysearchreq xmlns:air="http://www.travelport.com/schema/air_v16_0" xmlns:com="http://www.travelport.com/schema/common_v13_0" authorizedby="Test" targetbranch="P7004130"> 
            <air:searchairleg> 
            <air:searchorigin> 
            <com:airport code="LHR"> 
            </com:airport></air:searchorigin> 
            <air:searchdestination> 
            <com:airport code="JFK"> 
            </com:airport></air:searchdestination> 
            <air:searchdeptime preferredtime="2011-11-08"> 
            </air:searchdeptime></air:searchairleg> 
            </air:availabilitysearchreq> 
            </soapenv:body> 
        """
        auth = base64.b64encode('Universal API/uAPI2514620686-0edbb8e4:D54HWfck9nRZNPbXmpzCGwc95')
        req.add_header('Content-Type', 'text/xml; charset=utf-8')
        req.add_header('Accept', 'gzip,deflate')
        req.add_header('Cache-Control','no-cache')
        req.add_header('Pragma', 'no-cache')
        req.add_header('SOAPAction', '')
        req.add_header('Authorization', 'Basic %s'%(auth))
        return req

    https_request = http_request


URL = "https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/"
https = suds.transport.https.HttpTransport()
opener = urllib2.build_opener(HTTPSudsPreprocessor)
https.urlopener = opener
suds.client.Client(URL, transport = https)

但它不起作用。在

^{pr2}$

在过去的两周里,我一直在努力解决这个问题,所以如果你能,请告诉我解决办法。在


Tags: httpscomaddapihttpwwwairreq