WinHttp编程初步心得 编程心得体会

代码都在下面了,目前这个版本实现的功能还非常的少,能实现的有:

1. GET方法。给定一个URL(可以带中文),返回http的响应数据,包括文本和二进制数据
2. 支持代理服务器,需要用户预先设定好proxy server ip, port, username,password.

不支持的有:
1. POST
2. 查询http响应的header。
3. 将返回的文本数据重新编码,变成UTF-16。这需要首先从header取出httpserver响应的数据是什么编码的,然后就可以使用windows的MultiByteToWideChar来进行转换。

这里总结几点开发过程中的注意点:
1. MSDN上的资料不是非常的全,所以有些参考了google得来的内容。
2. WinHttpOpen的时候,如果用AUTOPROXY,也就是让winhttp从注册表读取proxy设置的话(这个注册表的设置是proxycfg.exe生成的,和IE中的那个proxy设置是两码事)。
3. proxy的用户名和密码需要用WinHttpSetOption来进行设置,timeout设定用WinHttpSetTimeouts
WinHttp编程初步心得 编程心得体会
4. 使用WinHttpCrackUrl可以将一个给定的url(必须以http://,https://打头)分解,设置到URL_COMPONENTS这个structure中。在这里其实就可以做urlencoding(也就是将url不支持的字符转换成%xxx这样的东西),但是这样做的话需要手动给URL_COMPONENETS中的member分配内存,比较麻烦,所以没做。
5.使用WinHttpCreateUrl可以根据URL_COMPONENETS重新生成一个string的URL,但是这里没用到。
6. 使用WinHttpConnect的时候,一定要注意要给出hostname,不是url,所以要手动分解,只取出httpserver的那个部分,比如http://www.google.com/sfsdfdsf?id=xxx&user=xxxx,hostname就是www.google.com
7.然后使用WinHttpOpenRequest的时候,就可以给出去掉了http://之后的后面所有内容了,也就是www.google.com/sfsdfdsf?id=xxx&user=xxxx这样的东西。 注意最后的flag设置:WINHTTP_FLAG_ESCAPE_PERCENT |WINHTTP_FLAG_REFRESH,这两个很有用,WINHTTP_FLAG_ESCAPE_PERCENT就是将url中不合法的内容转成%xxx,WINHTTP_FLAG_REFRESH就是跳过proxy的cache,每次都请求全新的数据。还有需要注意的是,WinHttpOpenRequest中,要求给出我们能接受的mimetype,这里可以参考代码,如果要文本,就给text/*,如果要二进制数据,就可以像这里给出application/*, image/*, audio/*......
8. 最后WinHttpSendRequest的时候,也可以设定additionalheader和optional数据。这里的optional数据一般是用于POST的,也就是将需要post到server的数据填充在这个地方。WinHttpSendRequest将header都发送出去之后,紧接着就会发送这个optional数据。
9.WinHttpQueryDataAvailable可以check是否还有数据需要接收。WinHttpReadData用来读取数据,注意读出来的数据就是字节流,像前面所说,如果是文本,那么要根据responseheader,首先知道是什么编码和字符集,然后再用MultiByteToWideChar来转换。也要注意WinHttpReadData的最后一个参数,给出了实际读取到的字节数,也可以根据这个信息来判断是否已经接收完了。此外特别需要注意的是,如果用的是一个固定的buffer循环接收,就像这里一样,那么不要忘记接收完成的时候,要在尾部加上,分配buffer的时候也要留出的位置。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/284304.html

更多阅读

《航海浮生记2》攻略:玩家100亿心得体会

游戏以大航海时代的欧洲区域为背景,提供了商品贩卖、宝藏挖掘、互动事件等,众多具有策略性和趣味性的玩法。(Supported language: 简体中文,繁體中文,English)《航海浮生记2》攻略:玩家100亿心得体会——步骤/方法《航海浮生记2》攻

《多元智能理论》学习心得体会

《多元智能理论》学习心得体会周家中学 张永文半年来通过对多元智能的解读与学习,我想从以下几方面来谈谈自己的体会与思考。一、转变教学观念根据多元智能理论,人的智能是多方面的,但如今的教育基本上是一种以语言教学为重点的教育,

哲学与人生的心得体会欧阳剑 哲学与人生论文

哲学与人生的心得体会欧阳剑2011-12-13一提到马克思主义哲学,我们这些年轻人不禁想起在校时枯燥的政治课:老师在前面高谈阔论,我们就趴在桌子上睡觉,通常大家都把它的乏味度提的比高数还高,数学题至少还有几个“书生”(也就是“呆子”)啃

新手购买吉他心得体会 新手吉他谱

作为一个学吉他的新手,买一把称心如意的吉他很重要,因为它直接影响到你的学习兴趣,下面讲讲我的心得体会吧~新手购买吉他心得体会——步骤/方法新手购买吉他心得体会 1、不要盲目追求价格周围蛮多人学吉他的,有好几个朋友一开始学就买个

学习桂贤娣老师心得体会

学习桂贤娣老师心得体会最近,学校组织我们观看了全国模范教师,湖北特级教师,被誉为“湖北教育专家”的湖北名师桂贤娣老师的讲座视频。桂老师的讲座十分精彩,这也是我学习以来听过的最好听最难忘的讲座。听她的讲座如同听故事,大家时而

声明:《WinHttp编程初步心得 编程心得体会》为网友少爷范儿分享!如侵犯到您的合法权益请联系我们删除