本帖最后由 liuyaping1115 于 2013-03-13 09:56:41 编辑

解决方案 »

  1.   

    <?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-03-15 01:54:55:57872" ReferenceID="76e57635-800f-491a-a5b8-8bd64deac514" ResultCode="Fail" ResultNo="100000" ResultMsg="System Error:Value cannot be null.
    Parameter name: s" /></Response>
      

  2.   

    能不能提供一些例子能读取api的demo,到目前为止,没突破soap技术,不知道requestXml和携程的api使用的技巧
      

  3.   

    想在ios平台开发应用,由于是新手,请问可以通过SOAP UI 工具访问携程的WSDL,查看携程所有可用的Web Service吗?
      

  4.   

    已经解决的问题(3.14日):问题10.
    <?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-03-11 15:12:46:59141" ReferenceID="ae06cb0d-179f-4198-8722-d745529fb75d" ResultCode="Fail" ResultNo="100000" ResultMsg="System Error:Data at the root level is invalid. Line 1, position 1." /></Response>测试ota_ping,返回这个结果是什么意思?答:这个情况往往是编程语言在做XML的标签转换时,未能正确转换造成的,比如IOS下
    [s appendString:@"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;"];
    把<>改成&lt;和&gt;就行了
    问题11.
    100006 InvalidAlliance  我一直返回这个错误 ,有哪位同学也是这样的吗
    我的SID,AllianceID都是注册过的
    这是我的请求体:<?xml version="1.0" encoding="utf-8"?><Request><Header AllianceID="6324" SID="164563" TimeStamp='13630182632220000' RequestType="OTA_UserUniqueID" Signature='8E0263F15C2E0880B426EAFA0914BEBD'/><UserRequest><AllianceID>6324</AllianceID><SID>164563</SID><UidKey>2341493878</UidKey></UserRequest></Request>答:这个地方的timestamp中好像放的是毫秒,我们要求用的是秒,是从1970年到目前的秒数。
    问题12.
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <Request>
    <Header AllianceID="5501" SID="136893" TimeStamp="1362968809" RequestType="GroupProductInfo" Signature="154CA5474FF99804356325198CA9DDFA" />
    <GroupProductInfoRequest>
    <ProductID>10400</ProductID>
    </GroupProductInfoRequest>
    </Request>
    返回:<?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-03-11 10:27:25:24777" ReferenceID="a6d2e68d-a1e3-4821-a924-2affd90e163c" ResultCode="Error" ResultNo="100000" ResultMsg="System Error:Object reference not set to an instance of an object." /></Response>答:请求的代码是没有问题了,只是你请求的团购产品已经下线了,所以会有这样的返回。我们提供的文档时间比较久了,样例产品有下架的可能性,所以大家可以从http://www.ctrip.com上找到目前在售的产品,做测试用。问题13
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
    <Request xmlns="http://ctrip.com/">
    <requestXML>
    <?xml version="1.0"?>
    <Request>
    <Header AllianceID="xx" SID="xx" TimeStamp="1362918494" 
    RequestType="OTA_Ping" Signature="xx" />
    <HotelRequest>
    <RequestBodyxmlns:ns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ns:OTA_PingRQ>
    <ns:EchoData>测试文本</ns:EchoData>
    </ns:OTA_PingRQ>
    </RequestBody>
    </HotelRequest>
    </Request>
    </requestXML>
    </Request>
    </soap:Body>
    </soap:Envelope>
    帮忙看下这个报文有何问题,返回是空答:<Header AllianceID="xx" SID="xx" TimeStamp="1362918494" 
    RequestType="OTA_Ping" Signature="xx" />
    这里的信息要填写联盟的详细信息,AllianceID,SID,然后生成Signature,TimeStamp也要用当时请求时,计算的时间戳。
    问题14:
    如签名原始参数串是:AllianceID =1& SID =50&TimeStamp =1234567890&RequestType=OTA_Ping站点密钥是:abcdefg123456
    "
    请问这里的参数都是要啥米???还有这个"{API_Url}:所需请求的API访问地址,携程旅行网提供了测试环境供测试使用,在测试通过后请联系客户经理开通生产环境访问权限
    "
    跟这个==
    " 请联系客户经理开通访问权限,并获取生产环境访问密钥。
    生产环境{API_Url}为:http://OpenAPI.ctrip.com答:AllianceID-联盟号,SID-联盟下面的站点号,TimeStamp-时间戳;RequestType-请求的接口类型;API_Url生成环境的地址是:http://OpenAPI.ctrip.com
    问题15:
    请问,requestXML中的字符编码是什么?UTF-8吗
    我发送的中文返回结果是乱码。
    我不知道是我接收到转码有问题,还是返回的就是乱码了?
    有遇到同样问题的同学吗?答:这个用的是UTF-8格式的,如果出现乱码,请先做一次中文转码,然后请求,返回的内容,如果是乱码,先做一次转码,然后解析XML。
    <?php
    /**
     * 
     * 将utf8转换为gbk
     * @param $str
     */
    function utf8ToGB($str){
    returniconv("utf-8","gbk",$str);
    }
    /**
     * 
     * 将gbk转换为utf8
     * @param $str
     */
    function gbToUtf8($str){
    returniconv("gbk","utf-8",$str);
    }
    ?>
    问题16.
     在酒店订单生产接口(OTA_HotelRes)中,需要在requet中传入一些uniqueId,其中有一个type=504,请问下是指的什么呢。
         如果我按照文档上,传值10000,返回的是这样的:
    <?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-03-04 16:02:07:69933" ReferenceID="6a927784-c725-421c-b6c2-6dc2c96e0dce" ResultCode="Fail" ResultNo="1107003" ResultMsg="Invalid AllianceId" /></Response>
      提示AllianceId不合法,这是什么原因呢?答:
    <?xmlversion="1.0"encoding="utf-8"?>
    <Request>
    <HeaderAllianceID="1"SID="50"TimeStamp="1335341667"RequestType="OTA_HotelRes"Signature="XXXXXXXXXXXXXXXXXXXXXXX" />
    <HotelRequest>
    <RequestBodyxmlns:ns="http://www.opentravel.org/OTA/2003/05"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ns:OTA_HotelResRQTimeStamp="2012-09-01T03:15:57"Version="1.0">
    <ns:UniqueIDType="504"ID="100000"/>----固定值
    <ns:UniqueIDType="28"ID="1"/>------联盟的号码,AID
    <ns:UniqueIDType="503"ID="50"/>-----联盟的站点 SID
    <ns:UniqueIDType="1"ID="c563a9ed-a090-4ded-b5dc-ddf1d3709e29"/>---在联盟站点中用户的用户名,对应到携程的 UniqueID,这个需要调用函数生成的。
    <ns:HotelReservations>
    <ns:HotelReservation>
    <ns:RoomStays>
    <ns:RoomStay>
    <ns:RoomTypes>
    <ns:RoomTypeNumberOfUnits="1"/>
    </ns:RoomTypes>
    <ns:RatePlans>
    <ns:RatePlanRatePlanCode="136129"/>
    </ns:RatePlans>
    <ns:BasicPropertyInfoHotelCode="51885"/>
    </ns:RoomStay>
    </ns:RoomStays>
    <ns:ResGuests>
    <ns:ResGuestArrivalTime="10:00:00+08:00">
    <ns:Profiles>
    <ns:ProfileInfo>
    <ns:Profile>
    <ns:Customer>
    <ns:PersonName>
    <ns:Surname>123</ns:Surname>
    </ns:PersonName>
    <ns:ContactPersonContactType="tel">
    <ns:PersonName>
    <ns:Surname>李海亮</ns:Surname>
    </ns:PersonName>
    <ns:TelephonePhoneNumber="15900560221"PhoneTechType="1"/>
    <ns:Email>[email protected]</ns:Email>
    </ns:ContactPerson>
    </ns:Customer>
    </ns:Profile>
    </ns:ProfileInfo>
    </ns:Profiles>
    <ns:TPA_Extensions>
    <ns:LateArrivalTime>2012-09-29T13:00:00+08:00</ns:LateArrivalTime>
    </ns:TPA_Extensions>
    </ns:ResGuest>
    </ns:ResGuests>
    <ns:ResGlobalInfo>
    <ns:GuestCountsIsPerRoom="false">
    <ns:GuestCountCount="1"/>
    </ns:GuestCounts>
    <ns:TimeSpanStart="2012-09-29T12:00:00+08:00"End="2012-09-30T12:00:00+08:00"/>
    <ns:SpecialRequests>
    <ns:SpecialRequest>
    <ns:Text>要一个电视</ns:Text>
    </ns:SpecialRequest>
    </ns:SpecialRequests>
    <ns:DepositPayments>
    <ns:GuaranteePaymentGuaranteeType="CC/DC/Voucher">
    <ns:AcceptedPayments>
    <ns:AcceptedPayment>
    <ns:PaymentCardCardType="gBG1pcTHP+M="CardNumber="jhXJzaRCoGreZXTmKx9fyFwyRJZqWimr"SeriesCode="cbyXWJ06Bx8="EffectiveDate="pjUanDE3Ta8="ExpireDate="pjUanDE3Ta8=">
    <ns:CardHolderName>ASq6ZwnS3tKI8lqh+lL4YQ==</ns:CardHolderName>
    <ns:CardHolderIDCard>AzoUFk527GHntp1pJryYhB+V4fuM75/1</ns:CardHolderIDCard>
    </ns:PaymentCard>
    </ns:AcceptedPayment>
    </ns:AcceptedPayments>
    <ns:AmountPercentAmount="1400"/>
    </ns:GuaranteePayment>
    </ns:DepositPayments>
    <ns:TotalAmountBeforeTax="1400" CurrencyCode="CNY"/>
    <ns:CancelPenalties>
    <ns:CancelPenaltyStart="2012-09-28T12:00:00"End="2012-09-30T15:00:00">
    <ns:AmountPercentAmount="1400.00" CurrencyCode="CNY"/>
    </ns:CancelPenalty>
    </ns:CancelPenalties>
    </ns:ResGlobalInfo>
    </ns:HotelReservation>
    </ns:HotelReservations>
    </ns:OTA_HotelResRQ>
    </RequestBody>
    </HotelRequest>
    </Request>
      

  5.   

    城市信息是不是要自己在网上查啊。比如,北京,上海,天津,这些信息。在API文档里,没看到有获取的API
      

  6.   

    酒店查询后得到的XML数据,服务器是一次性下发下来的吗??能分多次请求,每次请求几个吗??
      

  7.   

    在酒店查询里,当请求查询数据的时候,我能请求服务器每次最多给我发多少个酒店数据吗?比如每次请求完后只给我发20条酒店数据,我请求的时候,soap里,有这样的参数可以设置吗??还是说,这是由客户端来判断的,每次,收到多少条数据后,我就关闭连接,是这样的吗??
      

  8.   

    请问我
    Q:“我发团购的请求过去,不管我设置什么条件参数,都是给我全部团购信息”
    PS:“给个规范的请求要求,团购的,还有能否我获取1到4,再获取5到8,这样四个四个获取团购列表,像这种请求几个到几个的呢??
            我是直接用手机与你们的服务器交互”
      

  9.   

    请问一下,我的请求是这样写的,确一直报错Server was unable to process request. ---&gt; Data at the root level is invalid. Line 1, position 1
    //创建webservice的地址
        NSURL *url = [NSURL URLWithString:@"http://openapi.ctrip.com/Hotel/OTA_Ping.asmx"];    //创建request
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        
        NSString *httpBody = @"&gt?xml version=\"1.0\" encoding=\"utf-8\"?&lt\n"
        "&gtsoap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"&lt\n"
        "&gtsoap12:Body&lt\n"
        "&gtRequest xmlns=\"http://ctrip.com/\"&lt\n"
        "&gtHeader AllianceID=\"6757\" SID=\"167395\" TimeStamp=\"1364134327\" RequestType=\"OTA_Ping\" Signature=\"039C4ED5B902133967A71CFC91988770\" /&lt"
        "&gtrequestXML&lt ddd &gt/requestXML&lt\n"
        "&gt/Request&lt\n"
        "&gt/soap12:Body&lt\n"
        "&gt/soap12:Envelope&lt\n";
        
        //获得httpbody的长度
        NSString *httpBodyLength = [NSString stringWithFormat:@"%d",[httpBody length]];
        
        //设置request的内容
        [request addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        [request addValue:httpBodyLength forHTTPHeaderField:@"Content-Length"];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];
            //创建connection
        connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
        
        if (connection) {
            receiveData = [[NSMutableData alloc] init];
        }else{
            failedB_net(CONNECTIONFAILED);
        }
        多谢,多谢
      

  10.   

    问题17:携程提供的基于SOAP协议的api太过复杂,而且使用这套协议比较费流量,不利于移动端的开发,请问你们有提供json版本的api吗?另外看了“携程网站联盟OPENAPI2.0(支付)接口说明”,里面提到只有国内机票支付的api,酒店支付的api“暂未启用”,是否意味着我的app不能进行酒店的预订?
    答:提供的酒店数据都是到付类的酒店,不涉及支付,只有担保房型问题18:怎么获取城市列表啊?包括城市ID,区域ID?
    答:去静态文件里面查找
      

  11.   

    我在使用团购订单生成api时(http://{API_Url}/Tuan/GroupCreateOrder.asmx),这里有一个必填参数:UID 这个参数的值需要使用用户api生成(http://{API_Url}/{Business Type}/ OTA_UserUniqueID.asmx)。这个api的其中一个参数UidKey,根据文档描述 “本地用户名(调用方本地用户名相同值会返回相同用户)”。
    那么,
            1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
            2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
      

  12.   

    酒店查询目前不支持分页,一次请求至少返回一个城市的满足其它条件的所有酒店。
    如果您已知了要查询的酒店ID,可以通过酒店静态信息接口查询酒店信息。该接口支持一次请求10个(含10个)以内酒店静态信息。
    携程的建议是:酒店查询一段时间请求一次(如:15天或30天,因为酒店个数和酒店ID很少有变化的),并缓存到本地。酒店静态信息的更新可以通过酒店静态信息接口更新,酒店静态信息的更新频率也是比较少的,建议较长时间更新一次(如一个星期)。变化比较大的就是房间价格,可以通过价格计划查询和价格缓存变化查询两个接口得到(这两接口的更新频率建议是一天一次)。
      

  13.   

    在线支付只给了请求的URL和请求参数,没有给请求体的XML示例.这个该怎么处理?
      

  14.   

    我们生成API有什么用途?如果完全不用携程提供的api接口 写应用可以不?
    能在提供的api里获取到每日的行程吗?
      

  15.   

    在线支付只给了请求的URL和请求参数,没有给请求体的XML示例.这个该怎么处理? ---你做什么应用的,如果是做酒店的应用,是不用做在线支付的,我们的酒店只做现付和信用卡担保。
      

  16.   

    在线支付只给了请求的URL和请求参数,没有给请求体的XML示例.这个该怎么处理? ---你做什么应用的,如果是做酒店的应用,是不用做在线支付的,我们的酒店只做现付和信用卡担保。我们是做机票支付的
      

  17.   

    http://open.ctrip.com/help/CommonParams2.aspx?belong=CooperationMode&pagename=CommonParams2
    支付 的文档中,有详细的描述的。
      

  18.   

    我在使用团购订单生成api时( http://{API_Url}/Tuan/GroupCreateOrder.asmx),这里有一个必填参数:UID 这个参数的值需要使用用户api生成( http://{API_Url}/{Business Type}/ OTA_UserUniqueID.asmx)。这个api的其中一个参数UidKey,根据文档描述 “本地用户名(调用方本地用户名相同值会返回相同用户)”。
    那么,
            1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
            2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
      

  19.   

    您好,当使用api调用服务器端数据的时候,显示The test form is only available for requests from the local machine.
    也就是只能在本地上请求数据,无法跨域,如何解决?
      

  20.   

    OrderType
    int
    订单类型
    N
    1:携程收款 2:分销商收款1&2 啥区别阿?
      

  21.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=" http://www.w3.org/1999/xhtml" >
    <head><title>
    ֧      
    </title></head>
    <body>
        <form name="form1" method="post" action="PaymentReturn.aspx?errorCode=%7c20040101010" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTLBNU4QK80WwwFsAvPa4s0EGtevq4k6E3sSC70b01dkg==" />
    <script type="text/javascript">
    //<![CDATA[
    document.write('errorCode:20040101010');//]]>
    </script>    <div>
        
        </div>
        </form>
    </body>
    </html>
    errorcode啥意思?
      

  22.   

    请问一下,怎么一次性下载一个城市的所有酒店信息? ------------
    酒店业务场景:
    一、 初始酒店信息调用接口:
    (1)         OTA_HotelSearch,-----------获取酒店的基本信息
    (2)         OTA_HotelDescriptiveInfo----获取酒店的房型信息
     
    二、         初始价格信息调用接口:
    (1)           OTA_HotelRatePlan-------每次可以请求28天内的价格计划数据;接口可以提供90天内的价格计划(可通过3次请求获取)
     
    三、  更新酒店信息调用接口:-----每周更新一次酒店的基本数据
    (1)       OTA_HotelSearch,
    (2)       OTA_HotelDescriptiveInfo
    四、  更新价格信息调用接口:-------每天更新一次酒店的价格计划数据,获取最新的价格
    (1)       OTA_HotelCacheChange ,----找出发生变更的价格及房型,通过(2)进行数据库中数据的更新
    (2)       OTA_HotelRatePlan
    五、  订单下单调用接口
    (1)       OTA_UserUniqueID
    (2)       OTA_HotelAvail
    由于下单时,价格有可能和       四-2 中获取的价格出现不一致的情况,所以建议,在OTA_HotelAvail 后,再次调用 OTA_HotelRatePlan 接口,
    获取最新的价格,供下单使用。
    (3)       OTA_HotelRes
    六、   订单取消调用接口:
    (1)           OTA_Cancel
    七、   更新订单状态和同步订单信息
    (1)           OTA_HotelResNotif
    (2)           OTA_Read
      

  23.   

    OrderType
     int
     订单类型
     N
     1:携程收款 2:分销商收款
     
    1&2 啥区别阿? ---------------------请问用的是哪个接口?
      

  24.   


    OrderType字段的意思和使用场景应该不是 区分携程收款
    是否携程收款或分销商收款是根据AllianceID,SID 配置的。
      

  25.   

    我遇到的错误和上述情况一样,如果在ReturnUrl(用户支付完成或失败后跳转的页面)中填写一个url=www.baidu.com类似的url,那么webview会直接跳转到该url,因为支付失败了。
    那么,请问下ShowUrl(一般为预订订单核对页面地址)这个参数url应该怎么填写,是需要填自己服务器搭建的支付页面url吗
      

  26.   

    支付失败的话,从URL 中应该能看到ErrorCode和Message(URLDecode 后为中文消息),
    ReturnURL 与 ShowURL 的值都是贵方站点的页面地址(绝对路径)。
    支付成功后会跳转到ReturnURL页面(显示订单号等信息给用户),showURL 是商品详情页面(由合作方自己编写页面,用来展示如所选航班信息,所填写的乘机人信息,联系人信息等)
      

  27.   

    我们用ajax来获取度假的信息,访问都访问不了。网址是java通用方法来获取的
      

  28.   

    请问如何查询国际机票返程?  以下是我请求XML 提示:Sorry, No Flights matched current Request,Now。  但是我在携程网上看到是有航班的, 多谢!<Request>
      <Header AllianceID="5501" SID="136893" TimeStamp="1365401338" RequestType="OTA_IntlFlightSearch" Signature="3E4B7A459DC3557DE6ACC40D4F63B76F" />
      <IntlFlightSearchRequest>
        <TripType>OW</TripType>
        <PassengerType>ADT</PassengerType>
        <PassengerCount>1</PassengerCount>
        <Eligibility>ALL</Eligibility>
        <BusinessID />
        <BusinessType>OWN</BusinessType>
        <Airline />
        <ClassGrade>Y</ClassGrade>
        <SalesType>Online</SalesType>
        <FareIds />
        <FareType>All</FareType>
        <AgentID />
        <ResultMode>All</ResultMode>
        <OrderBy>Price</OrderBy>
        <Direction>Asc</Direction>
        <ShoppingInfoID>
          [1/2[CAN-SQ-N-SIN-SQ-N-DPS(NOA,N34102140,SFare,C1592)] 1/2[DPS-SQ-N-SIN-SQ-N-CAN(NOA,N34102140,SFare,C1592)]|NOR]{SQ853CANSIN05162,1|SQ946SINDPS05162,1|}
        </ShoppingInfoID>
        <SegmentInfos>
          <SegmentInfo>
            <DCode>DPS</DCode>
            <ACode>CAN</ACode>
            <DAirport />
            <AAirport />
            <DDate>2013-05-24</DDate>
            <TimePeriod>All</TimePeriod>
          </SegmentInfo>
        </SegmentInfos>
        <Routings />
      </IntlFlightSearchRequest>
    </Request>
      

  29.   

    携程的API是为了方便大家开发,如果不用携程提供的API接口,怎么获取到携程的数据呢?
    度假每日行程请参考文档《携程网站联盟OPENAPI2.0(度假)接口说明.doc》中的1.12产品明细 OTA_VacationPackageInfo VacationInfoResponse下的DailyDescInfo
      

  30.   


    首选查询返程,前提是往返程航班,注意航程类型的赋值
    <TripType>OW</TripType> OW:单程/RT:往返/MT:多程
    多程的时候,SegmentInfo 顺序列出航程信息。其次,请求返程时,除了带入所选去程某一舱位政策的ShoppingInfoID 之外,
    还需要更新请求中的<Routings /> 路由信息:
    格式为(以上海到洛杉矶 首尔中转为例)<Routings>
          <Routing>                                    
            <DCode>SHA</DCode>
            <ACode>SEL</ACode>
            <DAirport>PVG</DAirport>
            <AAirport>ICN</AAirport>
            <Airline>OZ</Airline>
            <SeatClass>V</SeatClass>
            <FlightNo>OZ364</FlightNo>
            <OperatorNo></OperatorNo>
            <SegmentInfoNo>1</SegmentInfoNo>
            <No>1</No>
          </Routing>
          <Routing>                                    
            <DCode>SEL</DCode>
            <ACode>LAX</ACode>
            <DAirport>ICN</DAirport>
            <AAirport>LAX</AAirport>
            <Airline>OZ</Airline>
            <SeatClass>V</SeatClass>
            <FlightNo>OZ204</FlightNo>
            <OperatorNo></OperatorNo>
            <SegmentInfoNo>1</SegmentInfoNo>
            <No>2</No>
          </Routing>
    </Routings>Routings 里是完整路由,如果多个中转,需要添加多个Routing
    多程请求时,每请求下一程时都需要更新Routings。
      

  31.   

    我在使用团购订单生成api时(http://{API_Url}/Tuan/GroupCreateOrder.asmx), 这里有一个必填参数:UID 这个参数的值需要使用用户api生成(http://{API_Url}/{Business Type}/ OTA_UserUniqueID.asmx)。这个api的其中一个参数UidKey,根据文档描述 “本地用户名(调用方本地用户名相同值会返回相同用户)”。
    那么,
            1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
            2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
      

  32.   

    携程提供的基于SOAP协议的api太过复杂,而且使用这套协议比较费流量,不利于移动端的开发,请问你们有提供json版本的api吗?另外看了“携程网站联盟OPENAPI2.0(支付)接口说明”,里面提到只有国内机票支付的api,酒店支付的api“暂未启用”,是否意味着我的app不能进行酒店的预订?
      

  33.   

    hi~  我按照你说的思路重新整理了下查返程请求xml,发现还是提示没有匹配的航班:
    <Request>
      <Header AllianceID="5501" SID="136893" TimeStamp="1365415650" RequestType="OTA_IntlFlightSearch" Signature="E34FAD2DD2582DC4550488B8292F4FD8" />
      <IntlFlightSearchRequest>
        <TripType>RT</TripType>
        <PassengerType>ADT</PassengerType>
        <PassengerCount>1</PassengerCount>
        <Eligibility>ALL</Eligibility>
        <BusinessID />
        <BusinessType>OWN</BusinessType>
        <Airline />
        <ClassGrade>Y</ClassGrade>
        <SalesType>Online</SalesType>
        <FareIds />
        <FareType>All</FareType>
        <AgentID />
        <ResultMode>All</ResultMode>
        <OrderBy>Price</OrderBy>
        <Direction>Asc</Direction>
        <ShoppingInfoID>[1/2[CAN-SQ-N-SIN-SQ-N-DPS(NOA,N34102140,SFare,C1592)]+1/2[DPS-SQ-N-SIN-SQ-N-CAN(NOA,N34102140,SFare,C1592)]|NOR]{SQ853CANSIN05162,1|SQ946SINDPS05162,1|}</ShoppingInfoID>
        <SegmentInfos>
          <SegmentInfo>
            <DCode>DPS</DCode>
            <ACode>CAN</ACode>
            <DAirport />
            <AAirport />
            <DDate>2013-05-09</DDate>
            <TimePeriod>All</TimePeriod>
          </SegmentInfo>
          <SegmentInfo>
            <DCode>DPS</DCode>
            <ACode>CAN</ACode>
            <DAirport />
            <AAirport />
            <DDate>2013-05-24</DDate>
            <TimePeriod>All</TimePeriod>
          </SegmentInfo>
        </SegmentInfos>
        <Routings>
          <Routing>
            <DCode>CAN</DCode>
            <ACode>SIN</ACode>
            <DAirport>CAN</DAirport>
            <AAirport>SIN</AAirport>
            <Airline>SQ</Airline>
            <SeatClass>Y</SeatClass>
            <FlightNo>SQ853</FlightNo>
            <OperatorNo></OperatorNo>
            <SegmentInfoNo>1</SegmentInfoNo>
            <No>1</No>
          </Routing>
          <Routing>
            <DCode>SIN</DCode>
            <ACode>DPS</ACode>
            <DAirport>SIN</DAirport>
            <AAirport>DPS</AAirport>
            <Airline>SQ</Airline>
            <SeatClass>Y</SeatClass>
            <FlightNo>SQ946</FlightNo>
            <OperatorNo></OperatorNo>
            <SegmentInfoNo>1</SegmentInfoNo>
            <No>2</No>
          </Routing>
        </Routings>
      </IntlFlightSearchRequest>
    </Request>我查询的是:广州(CAN)→巴厘岛(DPS) 去程2013-05-16  返程2013-05-24 
    是否是查返程xml 参数错误? 多谢!
      

  34.   

    <?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-04-09 09:53:36:55257" ReferenceID="6f64cae9-34d5-42ba-a612-97164121ca16" ResultCode="Fail" ResultNo="1505004" ResultMsg="Query tickets error" /></Response>
      

  35.   

    我来补充下:
    对于某些orderid是不会出错的,比如样例中的2688.但是有些orderid,我用的是1576988 (是用我写的程序生成的)就出这种错误.
      

  36.   

    继续补充:
    1.我用到的是团购订单的支付,不知道支付api能支持团购吗?2.我的请求地址是
    http://OpenAPI.ctrip.com/Tuan/PaymentEntry.aspx?AllianceId=6188&SID=160640&Timestamp=1365474334&Signature=DDFEE8D964007E3CCF8BBC8EB7331EE3&RequestType=PaymentEntry.aspx
    会不会哪里写错了?3.post请求的内容是:
    OrderID=1576988&PaymentDescription=&ReturnUrl=&Description=&Language=ZH&OrderType=6&ShowUrl=url&OrderSummary=summary
    请指出哪里写错了.
      

  37.   

    我又来问问题了~~
    这次是度假订单生成的问题了
    在 度假产品单选项 中
    我请求的返回<Response>
      <Header ShouldRecordPerformanceTime="False" Timestamp="2013-04-09 13:08:34:93678" ReferenceID="28914356-3201-47ce-9609-8683e6add65d" ResultCode="Fail" ResultNo="100000" ResultMsg="System Error:There is an error in XML document (1, 233)."/>
    </Response>我的xml是<?xml version="1.0"?><Request><Header AllianceID="6188" SID="160640" TimeStamp="1365484114" RequestType="OTA_VacationOrderItem" Signature="748BE1C0370A5111586AEB0942916BBA" /><VacationOrderItemRequest><PkgID>85867</PkgID><Adults>1</Adults><Children>1</Children><Rooms>1</Rooms><IsSuperOrder>false</IsSuperOrder><StartCity>1</StartCity><Segments><CustomerSegment><Segment>1</Segment><Departure>1</Departure><Room>0</Room><Item>0</Item></CustomerSegment></Segments></VacationOrderItemRequest></Request>请求地址是
    http://OpenAPI.ctrip.com/Vacations/OTA_VacationOrderItem.asmx?wsdl请问出错原因是啥?
      

  38.   


    1、不能翻页吗?你可以共100条100条一页页,这样就不会超时,也不会对网络造成大负载,至于服务器负载,要从你的应用性能来看了。例如我查个上海市的酒店名称为”上海“开头的,不也很多信息出来了。2、其实,这个需求是从 位置查询 中延伸出来的。因为携程说没有这个功能,说可以将酒店都下载下来到本地,自己去查的。因此,携程要么提供酒店一次性分页下载,要么满足这种基于位置查询的API。其实,这个问题的实质是基于移动应用的根本特性之一,位置 而延伸出来的,既然要做移动应用,那么OPEN API的功能也应该跟着延伸。请携程考虑!
      

  39.   

    酒店的OTA不支持你说的业务,但是用我最新在群中共享的D开头的接口是可以完成你说的业务的。
    使用D开头的接口时,请在http 头中加上 gzip,这样响应速度会快。文档中有接口的说明。
      

  40.   

    url redirect 过去么?我看到有errorcode但是没看到message
    明天试试看
    谢谢你的提示
      

  41.   


    我看过的,url里面没有message信息的~~~
    返回 http://OpenAPI.ctrip.com/404.htm?aspxerrorpath=/PaymentEntry.aspx
    5555。
      

  42.   

    没办法获取度假那个api的数据,我们是用html5+js+ajax来做应用的,可是ajax无法解析你们的数据,然后落地到我们的数据库里面。之前你说有js+ajax的实例,然后清明过后放上去,可是我到现在都没看到,希望尽快联系相关人员解决这问题。。
      

  43.   

    你访问的是哪个地址?
    没有错误消息是因为还未进入支付页面的逻辑就已经出错。
    Online 支付:http://openapi.ctrip.com/flight/onlinepayentry.aspx
    (与http://openapi.ctrip.com/flight/paymententry.aspx 相同)
    Mobile : http://openapi.ctrip.com/flight/mobilepayentry.aspx
    后面带上allianceid,sid,signature,及临时的订单相关参数(计算签名时requesttype即url中的文件名使用小写);
    支持Post/Get 方式提交。以下供参考:
    http://openapi.ctrip.com/Flight/mobilePayEntry.aspx?AllianceId=00&SID=00&Timestamp=201304100000&Signature=AAAAAAAAAAAAAAAAAAAAAA&ReturnUrl=http://openapi.ctrip.com/returrn.aspx&OrderID=93CEFA5AC1D34B7A92DB233AB5F3C52C&Description=&Language=ZH&OrderType=1&OrderSummary=%E4%B8%B4%E6%97%B6%E8%AE%A2%E5%8D%95%E5%8F%B7%EF%BC%9A93CEFA5AC1D34B7A92DB233AB5F3C52C
      

  44.   

    国内航班查询
    1 请求时的SOAP包:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ctr="http://ctrip.com/">
       <soapenv:Header/>
       <soapenv:Body>
          <ctr:Request>
             <!--Optional:-->
             
          <ctr:requestXML><![CDATA[<?xml version="1.0" encoding="utf-8"?><Request><Header AllianceID="7045" SID="169473" TimeStamp="1365588593" RequestType="OTA_FlightSearch" Signature="9425CAD88834BD1FB26E566B4ADD26B" /><FlightSearchRequest><SearchType>S</SearchType><Routes><FlightRoute><DepartCity>SHA</DepartCity><ArriveCity>BJS</ArriveCity><DepartDate>2013-04-20 00:00:00</DepartDate><AirlineDibitCode>CA</AirlineDibitCode></FlightRoute></Routes><SendTicketCity>SHA</SendTicketCity><BookDate>2013-04-10 00:00:00</BookDate><OrderBy>DepartTime</OrderBy><Direction>ASC</Direction></FlightSearchRequest></Request>]]></ctr:requestXML></ctr:Request>
       </soapenv:Body>
    </soapenv:Envelope>
    2.返回包:
    <?xml version="1.0"?><Response><Header ShouldRecordPerformanceTime="False" Timestamp="2013-04-10 10:10:08:21695" ReferenceID="59c57480-ae62-41e4-9702-edee1da1977a" ResultCode="Fail" ResultNo="100000" ResultMsg="System Error:There is an error in XML document (1, 170)." /></Response>
      

  45.   

    日期格式不正确,请使用yyyy-MM-dd 或 yyyy-MM-ddTHH:mm:sss
      

  46.   

    <Request>
      <Header AllianceID="5501" SID="136893" TimeStamp="1366118055" RequestType="OTA_IntlFlightSearch" Signature="E4E2DF27AA23E1B24FDB65FCD8B1022D" />
      <IntlFlightSearchRequest>
        <TripType>RT</TripType>
        <PassengerType>ADT</PassengerType>
        <PassengerCount>1</PassengerCount>
        <Eligibility>ALL</Eligibility>
        <BusinessID />
        <BusinessType>OWN</BusinessType>
        <Airline />
        <ClassGrade>Y</ClassGrade>
        <SalesType>Online</SalesType>
        <FareIds />
        <FareType>All</FareType>
        <AgentID />
        <ResultMode>All</ResultMode>
        <OrderBy>Price</OrderBy>
        <Direction>Asc</Direction>
        <ShoppingInfoID>
          [1/2[CAN-CZ-V-LON(NOA,N34469027G,S232,C6644)]1/2[LON-CZ-V-CAN(NOA,N34469027G,S232,C6644)]|NOR]{CZ303CANLON0505,1|}
        </ShoppingInfoID>
        <SegmentInfos>
          <SegmentInfo>
            <DCode>CAN</DCode>
            <ACode>LON</ACode>
            <DAirport />
            <AAirport />
            <DDate>2013-05-05</DDate>
            <TimePeriod>All</TimePeriod>
          </SegmentInfo>
          <SegmentInfo>
            <DCode>LON</DCode>
            <ACode>CAN</ACode>
            <DAirport />
            <AAirport />
            <DDate>2013-05-12</DDate>
            <TimePeriod>All</TimePeriod>
          </SegmentInfo>
        </SegmentInfos>
        <Routings>
          <Routing>
            <DCode>CAN</DCode>
            <ACode>LON</ACode>
            <DAirport>CAN</DAirport>
            <AAirport>LHR</AAirport>
            <Airline>CZ</Airline>
            <SeatClass>Y</SeatClass>
            <FlightNo>CZ303</FlightNo>
            <OperatorNo></OperatorNo>
            <SegmentInfoNo>1</SegmentInfoNo>
            <No>1</No>
          </Routing>
        </Routings>
      </IntlFlightSearchRequest>
    </Request>hi~  以上代码为我查询返程XML 最近我这边又查询不出返程数据提示:
    ResultNo="1201005" ResultMsg="Sorry, No Flights matched current Request,Now."我查询的广州(CAN) 到 伦敦(LON) 2013-05-05出发  2013-05-12返程  我在携程网上查询是有的,是否我的XML有问题?  麻烦帮忙看看多谢!!
      

  47.   

    http://{API_Url}/{Business Type}/ OTA_UserUniqueID.asmx请问一下,这里的{Business Type}是什么
      

  48.   


    请修改 ShoppingInfoID 参数的值
    <ShoppingInfoID>[1/2[CAN-CZ-V-LON(NOA,N34469027G,S232,C6644)]+1/2[LON-CZ-V-CAN(NOA,N34469027G,S232,C6644)]|NOR]{CZ303CANLON0505,1|}</ShoppingInfoID>
    注意别漏掉符号, 另外标签中间的值两段不可以有空格之类的符号。
      

  49.   


    NSString *soapMsg = [NSString stringWithFormat:
                             @"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;"
                             "&lt;soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"&gt;"
                             "&lt;soap:Body&gt;"
                             "&lt;Request xmlns=\"http://ctrip.com\"&gt;"
                             "&lt;requestXML&gt;"
                             "&lt;Header AllianceID=\"7368\" SID=\"172107\" TimeStamp=\"1335341667\" RequestType=\"OTA_UserUniqueID\" Signature=\"25AD5B99-6134-4A51-AED5-1CE1EB683839\" /&gt;"
                             "&lt;UserRequest&gt;"
                             "&lt;AllianceID&gt;7368&lt;/AllianceID&gt;"
                             "&lt;SID&gt;172107&lt;/SID&gt;"
                             "&lt;UidKey&gt;18038000253&lt;/UidKey&gt;"
                             "&lt;/UserRequest&gt;"
                             "&lt;/requestXML&gt;"
                             "&lt;/Request&gt;"
                             "&lt;/soap:Body&gt;"
                             "&lt;/soap:Envelope&gt;"];
    请求是上面,为什么有以下错误:
    <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">Server was unable to process request. ---&gt; Data at the root level is invalid. Line 1, position 1.</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope>
      

  50.   


    这里应该是,请求报文不太合规范,requestXML 节点内的内容是应该作为字符串来处理的,外面使用引用方式转换<> ,里面用相同的方式转换应该不行,试试使用<![CDATA[ ]]> 括起来试试。
      

  51.   


    NSString *soapMessage = [NSString stringWithFormat:
     @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
                                 "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
                                 "<soap:Body>\n"
                                 "<Request xmlns=\"http://ctrip.com/\">\n"
                                 "<requestXML>\n"
                                 "<Request>\n"
                                 "<Header AllianceID=\"7368\" SID=\"172107\" TimeStamp=\"1362968809\" RequestType=\"OTA_UserUniqueID\" Signature=\"25AD5B99-6134-4A51-AED5-1CE1EB683839\" />\n"
                                 "<UserRequest>\n"
                                 "<AllianceID>7368</AllianceID>\n"
                                 "<SID>172107</SID>\n"
                                 "<UidKey>18038000253</UidKey>\n"
                                 "</UserRequest>\n"
                                 "</Request>\n"
                                 "</requestXML>\n"
                                 "</Request>\n"
                                 "</soap:Body>\n"
                                 "</soap:Envelope>\n"
     ];
    NSLog(@"%@",soapMessage);
    //请求发送到的路径
    NSURL *url = [NSURL URLWithString:@"http://OpenAPI.ctrip.com/Hotel/OTA_UserUniqueID.asmx "];
    //创建"请求方式对象",请求对象实际是在构建HTTP报文,其包含请求地址,并且可以设置http请求的报文
    NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];
        [urlRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        
        [urlRequest addValue:[NSString stringWithFormat:@"%d",[soapMessage length]]
          forHTTPHeaderField:@"Content-Length"];
        
        //[urlRequest addValue:@"localhost" forHTTPHeaderField:@"Host"];
        
        [urlRequest addValue:@"http://ctrip.com/Request" forHTTPHeaderField:@"SOAPAction"];
        
        [urlRequest setHTTPMethod:@"POST"];
        [urlRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
    //其接收数据此时应该用委托方法来接收
    NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
    这样请求数据返回的是空,是不是我的请求哪里错了,大家帮帮忙,快疯了,弄了几天soap,还没见到数据!
      

  52.   

    请问下酒店搜索(OTA_HotelSearchRQ)中的AreaID(区域ID)怎么得到的
      

  53.   

    我觉得open api居然不支持json格式是一大败笔