协议说明
接口采用HTTPS的GET方式请求。
输入和输出参数都采用UTF-8编码。发送的请求体数据部分(即data参数)需要进行URLEncode处理。
接口域名:
测试环境:动态接口域名:api-test.elong.com;静态信息域名:api.elongstatic.com/test
生产环境:动态接口域名:api.elong.com;静态信息域名:api.elongstatic.com
注意:动态接口域名用于调用非xml结尾的接口,静态信息域名用于调用xml结尾的接口(xml已废弃),测试环境静态信息不需要添加ip白名单,动态接口调用需要将自己的机器ip添加到艺龙ip白名单中,ip白名单10分钟内生效。
正式环境无论静态信息还是动态接口都需要添加ip白名单,正式环境静态信息ip白名单添加后需要等待下一个整点的1分生效,动态接口10分钟内生效。
IP白名单添加方式查看常见问题,看不懂时联系艺龙商务。
务必对HTTPS请求请启用gzip压缩,可在header中增加请求头来开启,req.Headers.Add("Accept-Encoding", "gzip"),可以显著节省IO时间和带宽成本,平均压缩比在10以上;已开启强制验证,未开启接口将会返回失败。注意判断响应头中"content-encoding"为"gzip"时,再将响应正文以gzip模式进行解压缩,小于1kb的响应体不会被压缩。
公共请求参数
名称 | 类型 | 说明 |
---|---|---|
user | String | 账户名,商务提供 |
method | String | 访问的方法名 |
timestamp | String | Unix时间戳,基于东八区的时间(是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒) |
format | String | 目前为json |
data | String | 业务参数,发送时使用的url编码,参考data参数,如下接口入参 |
signature | String | 数据签名,签名是为了解决请求的唯一性、时效性。 签名方法:md5(timestamp + md5(data + appkey) + secretKey) 。 注意要小写,加号指拼接字符串操作。 详见下面的注意事项。 |
data参数
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
Version | 请求对应API的版本 | Decimal | N | Version是为了保证与分销商对接的兼容性,越高的版本输出的属性越多 ,分销商保持使用一个版本即可。版本号:推荐1.65以上,可在变更历史看最新的 |
Local | 语言 | Enum | N | 仅可选:en_US,zh_CN |
Request | 请求参数 | Element | N | 每个接口不同的请求对象,详细见各接口文档 |
响应参数
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
Code | 结果代码 | String | N | 0表示请求成功返回;非0表示存在业务异常。
业务异常详见错误码 |
Result | 结果数据 | Object | Y | 不同的请求返回的不同结果。 |
Guid | 链路标识 | String | Y | 本次请求的唯一链路标识,建议存储,以方便提供唯一标识查询问题 |
调用示例
例:为方便查看 示例中的data没有URLEncoding
https://{host}/rest?timestamp=1488767234&format=json&method=hotel.list&signature= b1014d1208b993bbd90f2cfba7b9c3a8&user={userid}&data= {"Version":"1.28","Local":"zh_CN", "Request":{"ArrivalDate":"2017-3-18","DepartureDate":"2017-3-19", "CityId":"0101","PageIndex":1,"PageSize":10,"ResultType":"1,2,4","PaymentType":"All"}}
更多的接口调用示例可以查看每个API文档。
注意事项
1. 账户名是由商务提供的,分为测试环境和正式环境两组,测试环境以Agent开头。不要使用向正式环境的url传入测试环境账号,反之亦然。
2. 可以对HTTP请求请启用Gzip和Keep-alive,提升性能。
3. 请求需要按照如下的签名方法:md5(timestamp + md5(data + appkey) + secretKey) 进行签名。
4. md5其中timestamp需要和请求中的timestamp保持一致。data为请求中的data参数部分(不需要URLEncode),appkey和secretKey是由商务连同用户名一起发放的。Md5进行加密的数据是utf-8格式的。如果请求报signature错误,请用Md5测试工具校验一下
5. md5(1489555911+md5({"Version":"1.28","Local":"zh_CN","Request{"ArrivalDate":"2017-03-16",
"DepartureDate":"2017-03-17","CityId":"0101","PageIndex":1,"PageSize":10,"ResultType":"1,2,4","PaymentType":"All"}}
+97f1f3804a9388663067f0eb04c21281)+431d6af690d323f99bd816215b30b156)
=md5(1489555911+39f6deaa247a7bfffaa53bb167c31d2a+431d6af690d323f99bd816215b30b156)
=d0ec6b9b98a0d56e30f33e5fc527cbac