博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
无法使IE进入调试模式(ActiveX等程序的断点不起作用)的解决方法
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN
新建DWORD值,TabProcGrowth=0即可。
分类:Win32/C++ 查看次数:9829 发布时间:2011/5/15 13:11:16
http client库libcurl的使用方法/中国移动WLAN登陆器/移动CMCC登陆器绿色版
2014年2月26日更新:
点击下载 CMCC登陆器绿色版v1.01.zip
源码:点击下载WlanControl1.01-src.zip
Release Notes:
1) 根据WLAN登录页面的更改,修改了登录过程;
2) 可以在没有下线的情况下退出程序。
libcurl下载地址: http://curl.haxx.se/libcurl/
点击下载 CMCC登陆器绿色版v1.01.zip
源码:点击下载WlanControl1.01-src.zip
Release Notes:
1) 根据WLAN登录页面的更改,修改了登录过程;
2) 可以在没有下线的情况下退出程序。
libcurl下载地址: http://curl.haxx.se/libcurl/
1.初始化,这两个函数在这个应用程序中只能调用一次:
curl_global_init(CURL_GLOBAL_ALL);
curl_global_cleanup();
2.创建curl句柄,对于每个线程都要调用,且不要跨线程使用curl句柄:
CURL *m_pUrlHandle=curl_easy_init();
curl_easy_cleanup(m_pUrlHandle);
3.常用选项
//启用此m_pUrlHandle的Cookie跟踪(自动保存,提交Http Header中的Cookie)
//很多时候,Session也是通过Cookie来实现的
curl_easy_setopt(m_pUrlHandle,CURLOPT_COOKIEFILE,"");
//自动跟踪Http Header中的Referer参数
curl_easy_setopt(m_pUrlHandle,CURLOPT_AUTOREFERER,1);
//连接服务器和发送请求的超时设置,单位是毫秒
curl_easy_setopt(m_pUrlHandle,CURLOPT_TIMEOUT_MS,5000);
curl_easy_setopt(m_pUrlHandle,CURLOPT_CONNECTTIMEOUT_MS,2000);
//启用Header输出
curl_easy_setopt(m_pUrlHandle,CURLOPT_HEADER,1);
//DNS解析超时时间秒
curl_easy_setopt(m_pUrlHandle, CURLOPT_DNS_CACHE_TIMEOUT, 1);
//客户端类型标识
curl_easy_setopt(m_pUrlHandle, CURLOPT_USERAGENT, "libcurl");
//手动设置请求Http Header中的Referer参数
curl_easy_setopt(m_pUrlHandle,CURLOPT_REFERER, "http://refer..");
//设置读取数据的回调函数
curl_easy_setopt(m_pUrlHandle, CURLOPT_WRITEFUNCTION, write_data);
//将m_strHtml的指针传递给write_data函数(void *userp就是这里的m_strHtml指针)
curl_easy_setopt(m_pUrlHandle, CURLOPT_WRITEDATA, &m_strHtml);
4.回调函数
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
size_t nsize=size*nmemb;
//…在这里保存数据
string *strHtml=(string*)userp;
strHtml->append((char*)buffer,nsize);
//注意这里的返回值必须是size*nmemb
return nsize;
}
5.发送GET请求
curl_easy_setopt(m_pUrlHandle,CURLOPT_URL, "http://aaa...?s=1");
CURLcode res = curl_easy_perform(m_pUrlHandle);
//在这里处理接收到的数据
6.发送POST请求
curl_easy_setopt(m_pUrlHandle,CURLOPT_URL, "http://aaa...");
curl_easy_setopt(m_pUrlHandle,CURLOPT_POSTFIELDS, "a=1&b=2");
CURLcode res = curl_easy_perform(m_pUrlHandle);
curl_easy_perform函数执行之后,write_data函数将被多次调用,
在数据获取完成或者超时之前,curl_easy_perform函数不会返回。
注意:每次POST或者GET之前,需要先调用curl_easy_reset,并重新用curl_easy_setopt设置libcurl的参数,否则会出现内存访问错误(具体原因未查)。
注意:每次POST或者GET之前,需要先调用curl_easy_reset,并重新用curl_easy_setopt设置libcurl的参数,否则会出现内存访问错误(具体原因未查)。
7.示例应用程序,中国移动WLAN登陆器1.0/深圳移动CMCC登陆器1.0
移动的CMCC上线下线相当麻烦,一不小心就无法下线;于是就有了这个小工具和这篇日志。
源码和可执行程序:
点击下载WlanControl1.0.rar
上线成功之后,可以关闭此程序;需要下线时,再打开它。
本文链接地址:
http client库libcurl的使用方法/中国移动WLAN登陆器/移动CMCC登陆器绿色版
https://blog.qingfengju.com/index.asp?id=250
https://blog.qingfengju.com/index.asp?id=250
分类:Win32/C++ 查看次数:24345 发布时间:2011/5/11 14:59:00