1. 程式人生 > >使用WinHttp介面程式設計的心得

使用WinHttp介面程式設計的心得

       背景很簡單,最近嘗試用WinHttp介面寫一個程式,發現很多問題,這套介面不好用啊。

       我的目的很簡單,想定時每秒從伺服器上通過HTTP協議不同的路徑Get不同的商品資訊。一開始很簡單,我先固定一個URL,嘗試不斷獲取資料,很簡單,也很好用,自己封裝了幾個類,session,connect和request類,就能成了,具體例子我就不舉了,網上很多例子,我做了非同步的,參考下面的網址:非同步WinHttp程式設計

       可是我想說的是,現實很殘酷,我的需求也沒有那麼簡單,最痛苦的是一個,我的URL中,有一個時間戳變數,每秒變化,於是呢,我每回傳的url中的路徑都得不一樣,使得每秒都有一個get的request,如果商品多的話,最終的url就很多很多,request就很多很多,程式肯定受不了了。所以我到現在都還沒搞,其實現在變化是url中的extra information在變化,就是每一個url中問號之後的部分資料,我現在的處理方式是將整一串url都當左path傳到request中了,這樣是可以get到資料的,但是不理想,可是我不懂用WinHttp的介面,所以還需要繼續探究,這篇部落格是個開始。

       URL中的形式如下:http://xxx.yyy.zzz/abc?key1=jjj&key2=kkk&key3=ttt

       如果我能只用一個request連線,path=http://xxx.yyy.zzz/abc,而每次get的時候改變後面的資料,那就是想要的了。

       本來是想簡單用WinHttp實現一下自己的需求,現在還是決定放棄了,雖然成功get到資料,但是健壯性太差,即使最後我已經成功解決URL不一樣的問題,但是即使對同一個URL連續get,久了以後也會出現控制代碼失效的情況,結果又要處理控制代碼失效的問題,我想到的解決辦法是把當前的控制代碼關掉後重新建立session、connect、request然後再重新get,甚至可以不等它自己失效,而是主動重建連線。另外就是一個connect中多個request好像需要排隊,最終導致某些request會延時,自己對這些介面不熟悉,但是看程式執行結果貌似就是這樣的,還有收到資料之後資料處理的問題,同步互斥的問題等等,所以現在決定還是直接改用curl庫了。