解决方案 »
- xcode 4.4中 怎样直接给tableview cell赋静态值?
- html5的网站怎么打包到ipad啊
- MKMapView 响应touchesbegan事件
- iphone开发者资格可开发票否?
- tabbar问题!
- 【求助】Ios 用storyboard搭建界面,但不想用Sugue连接,想用别的方法切界面
- 【新手】cocos2d-x监听不到触屏动作,求救!
- 做ios相关开发,你都有哪些装备,晒一晒。。。。
- 在Xcode环境中,一个View上需要画一个表格,这个表格的线怎么画啊?
- 使用Cornerstone commit后,看不到新建的目录
- 对IOS方面感兴趣,求教高手
- asyncSocket发送图片
Parameter name: s" /></Response>
<?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:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"];
把<>改成<和>就行了
问题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>
Q:“我发团购的请求过去,不管我设置什么条件参数,都是给我全部团购信息”
PS:“给个规范的请求要求,团购的,还有能否我获取1到4,再获取5到8,这样四个四个获取团购列表,像这种请求几个到几个的呢??
我是直接用手机与你们的服务器交互”
//创建webservice的地址
NSURL *url = [NSURL URLWithString:@"http://openapi.ctrip.com/Hotel/OTA_Ping.asmx"]; //创建request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *httpBody = @">?xml version=\"1.0\" encoding=\"utf-8\"?<\n"
">soap12: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\"<\n"
">soap12:Body<\n"
">Request xmlns=\"http://ctrip.com/\"<\n"
">Header AllianceID=\"6757\" SID=\"167395\" TimeStamp=\"1364134327\" RequestType=\"OTA_Ping\" Signature=\"039C4ED5B902133967A71CFC91988770\" /<"
">requestXML< ddd >/requestXML<\n"
">/Request<\n"
">/soap12:Body<\n"
">/soap12:Envelope<\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);
}
多谢,多谢
答:提供的酒店数据都是到付类的酒店,不涉及支付,只有担保房型问题18:怎么获取城市列表啊?包括城市ID,区域ID?
答:去静态文件里面查找
那么,
1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
如果您已知了要查询的酒店ID,可以通过酒店静态信息接口查询酒店信息。该接口支持一次请求10个(含10个)以内酒店静态信息。
携程的建议是:酒店查询一段时间请求一次(如:15天或30天,因为酒店个数和酒店ID很少有变化的),并缓存到本地。酒店静态信息的更新可以通过酒店静态信息接口更新,酒店静态信息的更新频率也是比较少的,建议较长时间更新一次(如一个星期)。变化比较大的就是房间价格,可以通过价格计划查询和价格缓存变化查询两个接口得到(这两接口的更新频率建议是一天一次)。
能在提供的api里获取到每日的行程吗?
支付 的文档中,有详细的描述的。
那么,
1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
也就是只能在本地上请求数据,无法跨域,如何解决?
int
订单类型
N
1:携程收款 2:分销商收款1&2 啥区别阿?
<!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啥意思?
酒店业务场景:
一、 初始酒店信息调用接口:
(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
int
订单类型
N
1:携程收款 2:分销商收款
1&2 啥区别阿? ---------------------请问用的是哪个接口?
OrderType字段的意思和使用场景应该不是 区分携程收款
是否携程收款或分销商收款是根据AllianceID,SID 配置的。
那么,请问下ShowUrl(一般为预订订单核对页面地址)这个参数url应该怎么填写,是需要填自己服务器搭建的支付页面url吗
ReturnURL 与 ShowURL 的值都是贵方站点的页面地址(绝对路径)。
支付成功后会跳转到ReturnURL页面(显示订单号等信息给用户),showURL 是商品详情页面(由合作方自己编写页面,用来展示如所选航班信息,所填写的乘机人信息,联系人信息等)
<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>
度假每日行程请参考文档《携程网站联盟OPENAPI2.0(度假)接口说明.doc》中的1.12产品明细 OTA_VacationPackageInfo VacationInfoResponse下的DailyDescInfo
首选查询返程,前提是往返程航班,注意航程类型的赋值
<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。
那么,
1.这个uidkey是不是我们用来登陆到携程网站上的用户名,也就是携程帐号?
2.如果是的话,那这个api返回后的OperationType 参数不就没意义了吗,因为如果是携程帐号的话,应该不是那么简单就能新建的。
<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 参数错误? 多谢!
对于某些orderid是不会出错的,比如样例中的2688.但是有些orderid,我用的是1576988 (是用我写的程序生成的)就出这种错误.
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
请指出哪里写错了.
这次是度假订单生成的问题了
在 度假产品单选项 中
我请求的返回<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请问出错原因是啥?
1、不能翻页吗?你可以共100条100条一页页,这样就不会超时,也不会对网络造成大负载,至于服务器负载,要从你的应用性能来看了。例如我查个上海市的酒店名称为”上海“开头的,不也很多信息出来了。2、其实,这个需求是从 位置查询 中延伸出来的。因为携程说没有这个功能,说可以将酒店都下载下来到本地,自己去查的。因此,携程要么提供酒店一次性分页下载,要么满足这种基于位置查询的API。其实,这个问题的实质是基于移动应用的根本特性之一,位置 而延伸出来的,既然要做移动应用,那么OPEN API的功能也应该跟着延伸。请携程考虑!
使用D开头的接口时,请在http 头中加上 gzip,这样响应速度会快。文档中有接口的说明。
明天试试看
谢谢你的提示
我看过的,url里面没有message信息的~~~
返回 http://OpenAPI.ctrip.com/404.htm?aspxerrorpath=/PaymentEntry.aspx
5555。
没有错误消息是因为还未进入支付页面的逻辑就已经出错。
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
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>
<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有问题? 麻烦帮忙看看多谢!!
请修改 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>
注意别漏掉符号, 另外标签中间的值两段不可以有空格之类的符号。
NSString *soapMsg = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<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/\">"
"<soap:Body>"
"<Request xmlns=\"http://ctrip.com\">"
"<requestXML>"
"<Header AllianceID=\"7368\" SID=\"172107\" TimeStamp=\"1335341667\" RequestType=\"OTA_UserUniqueID\" Signature=\"25AD5B99-6134-4A51-AED5-1CE1EB683839\" />"
"<UserRequest>"
"<AllianceID>7368</AllianceID>"
"<SID>172107</SID>"
"<UidKey>18038000253</UidKey>"
"</UserRequest>"
"</requestXML>"
"</Request>"
"</soap:Body>"
"</soap:Envelope>"];
请求是上面,为什么有以下错误:
<?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. ---> Data at the root level is invalid. Line 1, position 1.</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope>
这里应该是,请求报文不太合规范,requestXML 节点内的内容是应该作为字符串来处理的,外面使用引用方式转换<> ,里面用相同的方式转换应该不行,试试使用<![CDATA[ ]]> 括起来试试。
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,还没见到数据!