当前位置:   article > 正文

iOS应用下集成携程api(酒店和飞机票)_携程对外机票api数据接口

携程对外机票api数据接口

最近一个项目中要使用酒店查询和飞机票预定,我这一通折腾,好在皇天不负有心人,最后终于一一搞定。选择了携程,为什么呢?目前国内有几家规模比较大的,例如:去哪儿,艺龙旅行,和携程。了解了一圈,最后发现,携程的api免费的。所以我就选择了携程。如果你对携程api有什么疑虑,或者不清楚,不知道怎么使用的,请留言,我会尽快回复你的。目前网上的资料(ios用的)比较少,所以我就写了这篇博客让大家尽量少走些弯路。

1>首先在使用携程api的时候你需要明白什么是soap?

SOAP(SimpleObjectaccessPRotocal,简单对象访问协议)技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的应用能够被广泛的用户所访问。SOAP是把成熟的基于HTTP的WEB技术与xml的灵活性和可扩展性组合在了一起。


2>作为ios开发者,当我们请求时需要xml格式的请求体就比较蛋疼了。今天带大家先简单看看soap,简单对象访问协议,或者叫做简单交换协议。我的理解就是我们在请求的时候发一个请求,这个请求带上xml格式请求体。然后呢,服务器在接受到我们xml请求体后,返回给我们一个xml结果。然后我们开始解析。就是这样的一个请求的过程。


2.1>那么有些同学可能会问了,怎么封装xml请求体呢?

下面就是xml请求体了

  1. NSString *soapBody = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
  2. "<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/\">"
  3. "<soap:Body>"
  4. "<Request xmlns=\"http://ctrip.com/\">"
  5. "<requestXML>AllianceID=\"你的联盟id\" SID=\"你的站点id\" TimeStamp=\"1416436597\" Signature=\"你的签名\" RequestType=\"OTA_Ping\" AsyncRequest=\"false\" Timeout=\"0\" MessagePriority=\"3\"</requestXML>"
  6. "</Request>"
  7. "</soap:Body>"
  8. "</soap:Envelope>";

3>那怎样post给服务器呢?

我们平常所说的xml请求体就是一个data,NSData,首先我们需要将字符串转换成为data,然后post给服务器。这样服务器在收到请求后就会回应我们。例如:

  1. NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:WebServicesURL]];
  2. NSString *msgLength = [NSString stringWithFormat:@"%lu", (unsigned long)[message length]];
  3. // 添加请求的详细信息,与请求报文前半部分的各字段对应
  4. [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
  5. [request addValue: @"http://ctrip.com/Request" forHTTPHeaderField:@"SOAPAction"];
  6. [request addValue: msgLength forHTTPHeaderField:@"Content-Length"];
  7. [request setHTTPMethod:@"POST"];
  8. [request setHTTPBody:[message dataUsingEncoding:NSUTF8StringEncoding]];
  9. NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
  10. if (connection) {
  11. soapData=[[NSMutableData alloc] init];
  12. }
  13. [connection start];

4>好了,到了现在基本上已经完成了请求的步骤,剩下的就是解析了。我们可以在 - ( void )connection:( NSURLConnection *)connection didReceiveData:( NSData *)data方法中打印data,如果有值就说明我们请求成功了。

解析的话大家去网上搜索KissXml,可以借鉴下,写的不错。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/874821
推荐阅读
相关标签
  

闽ICP备14008679号