关于刷屏的实现技术(代码+实例讲解)

ccwd003 2004-09-16 05:26:37
这里不打算给出一个完整的刷屏机,只就一些实现细节讨论下:
所使用的API是这么几个
InternetOpenW
InternetConnectW
HttpOpenRequestW
HttpSendRequestW
InternetReadFile
InternetCloseHandle
依次调用就行了
如下例:
const WCHAR hdrs[] = L"Content-Type: application/x-www-form-urlencoded";
const WCHAR* verb = L"POST";
const WCHAR* accept[] = {L"Accept: */*", 0};
wstring frmdata = GetData();
HINTERNET hSession = InternetOpenW(L"MyAgent", INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, 0);
HINTERNET hConnect = InternetConnectW(hSession, L"community.csdn.net",
INTERNET_DEFAULT_HTTP_PORT, NULL,
NULL, INTERNET_SERVICE_HTTP, 0, 1);
HINTERNET hRequest = HttpOpenRequestW(hConnect, verb,
L"Expert/reply.asp", NULL, NULL,
(const WCHAR**)&accept, INTERNET_FLAG_NO_COOKIES , 1);
HttpSendRequestW(hRequest, hdrs, wcslen(hdrs), (void*) frmdata.c_str(), frmdata.size());
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);

至于InternetReadFile这个使不使用属于个人爱好,使用它可能会多花费时间,也造成服务器负担,但是不使用的话你就不知道成没成功。建议刚开始的时候使用,等有信心的可以不用。
细节1:
HttpOpenRequestW的时候INTERNET_FLAG_NO_COOKIES这个标记很关键,如果没有这个标记,那么你就不能用HttpAddRequestHeaders去添加cookie了,因为这时候wininet自己管理cookie。在论坛使用cookie的时候这一点须注意。
cookie头的格式:"Cookie: name=value;name1=value1...\r\n"
不过有个更好的方法,直接用InternetGetCookie就可以得到,否则的话,需要用
HttpQueryInfo(hRequest, HTTP_QUERY_SET_COOKIE, szBuf, &length, &index);
去手工获取,然后从中解析出cookie。

细节2:
verb 可以去"POST"或者"GET",具体什么时候用那种呢?
由表单提交的(如发帖)一般就用POST,这时候数据全用"name=value&name1=value1&name2=..."这种格式,作为HttpSendRequestW的第四个参数传过去
如果直接写成url的(如帖子列表http://community.csdn.net/Expert/ForumList.asp?roomid=1404&typenum=1&whichpage=1)就用GET,注意Get的时候数据就不要放到frmdata中了,直接写入url,像上面的例子就是写成"Expert/ForumList.asp?roomid=1404&typenum=1&whichpage=1",作为HttpOpenRequestW的第三个参数直接使用。

更多问题,大家补充
...全文
350 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
XmagicX 2004-09-18
  • 打赏
  • 举报
回复
不全
oyljerry 2004-09-18
  • 打赏
  • 举报
回复
自动发文刷屏?
xdljf 2004-09-18
  • 打赏
  • 举报
回复
what's 刷屏机?
your code is just some internet functions of ms
Atomictry 2004-09-18
  • 打赏
  • 举报
回复
不懂,学习
memory_xj 2004-09-18
  • 打赏
  • 举报
回复
不了解,学习中~~
gooyan 2004-09-16
  • 打赏
  • 举报
回复
mark
kugou123 2004-09-16
  • 打赏
  • 举报
回复
你的意思是网页聊天室那种刷屏机吗?
zhaogaojian 2004-09-16
  • 打赏
  • 举报
回复
哈哈
zhaogaojian 2004-09-16
  • 打赏
  • 举报
回复
什么是刷屏机?

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧