最近利用業餘時間,使用了同程旅遊網的開放平臺,並對大部分的方法進行了呼叫,發現有很多不好用的地方,比如
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