最近利用業余時間,使用了同程旅游網的開放平台,並對大部分的方法進行了調用,發現有很多不好用的地方,比如
1.同一個開放平台居然有幾個調用地址,景區調用http://tcopenapi.17usoft.com/handlers/scenery/queryhandler.ashx ,酒店調用http://tcopenapi.17usoft.com/handlers/hotel/QueryHandler.ashx。
2.只能返回xml格式,在現在大多數平台可以返回json的情況下,居然只能返回xml,而且還不能直接反序列化為對象。除非自己實現這個反序列化的過程。
3.錯誤信息提示不夠充分,無處可以查詢詳細信息。
4.客戶端調用非要傳入clientIp,哪怕是127.0.0.1都可以,實在不明白這樣做有和意義。
5. 實體對象不一致,同一個對象,不同接口返回的xml用不同的tag,讓你無法使用反射等特性來對給屬性賦值。
......
以上總總,總之一句話,不好用。
本人在使用的過程中,力圖抹平這些不一致。開發了一整套針對同程網開放平台的sdk。上圖。
上圖是sdk的整體結構,
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