最近利用业余时间,使用了同程旅游网的开放平台,并对大部分的方法进行了调用,发现有不少很差用的地方,好比json
1.同一个开放平台竟然有几个调用地址,景区调用http://tcopenapi.17usoft.com/handlers/scenery/queryhandler.ashx ,酒店调用http://tcopenapi.17usoft.com/handlers/hotel/QueryHandler.ashx。api
2.只能返回xml格式,在如今大多数平台能够返回json的状况下,竟然只能返回xml,并且还不能直接反序列化为对象。除非本身实现这个反序列化的过程。工具
3.错误信息提示不够充分,无处能够查询详细信息。测试
4.客户端调用非要传入clientIp,哪怕是127.0.0.1均可以,实在不明白这样作有和意义。ui
5. 实体对象不一致,同一个对象,不一样接口返回的xml用不一样的tag,让你没法使用反射等特性来对给属性赋值。spa
......code
以上总总,总之一句话,很差用。xml
本人在使用的过程当中,力图抹平这些不一致。开发了一整套针对同程网开放平台的sdk。上图。对象
上图是sdk的总体结构,blog
Domain ->实体对象文件夹
Facade ->接口调用外观层,里面有两个Facade,里面都是静态方法,后面介绍这两个类的具体用法
Request ->请求参数的封装,封装后的request,将在发送请求到服务端的时候,自动序列化为同程网开放平台接口所须要的xml。
Response ->返回数据的封装,封装后的response,将直接是对象的形式,你能够尽情地点,而后选择属性,而后就ok了。
Util->sdk通用的工具类。
上图是接口外观层的封装,都是静态方法,你只须要实例化request,而后设置参数,而后调用外观层方法,就能够获得所要的结果。
上图示范如何使用。如今使用是否是很是之简单哇!
以上两图是quick watch的图片。已经所有包装成对象的形式,和返回的xml基本一致。
鉴于不少朋友找我要sdk,特开放源码下载,若有问题请自行修改并测试
bin:http://files.cnblogs.com/jackhuclan/tcsdk.rar
sourcecode:http://files.cnblogs.com/jackhuclan/tcsdk_sourcecode.zip