使用WinHttp接口编程的心得

来源:互联网 发布:聪明的程序员用delphi 编辑:程序博客网 时间:2024/05/21 15:39

       背景很简单,最近尝试用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库了。

0 0
原创粉丝点击