2014年2月26日更新:
点击下载 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_pUrlHandleCookie跟踪(自动保存,提交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的参数,否则会出现内存访问错误(具体原因未查)。
 
7.示例应用程序,中国移动WLAN登陆器1.0/深圳移动CMCC登陆器1.0
 移动的CMCC上线下线相当麻烦,一不小心就无法下线;于是就有了这个小工具和这篇日志。

 

源码和可执行程序:
点击下载WlanControl1.0.rar

上线成功之后,可以关闭此程序;需要下线时,再打开它。


本文链接地址: http client库libcurl的使用方法/中国移动WLAN登陆器/移动CMCC登陆器绿色版
https://blog.qingfengju.com/index.asp?id=250

上一篇: C++实现http客户端
下一篇: 修改对话框的类名

分类:Win32/C++ 查看次数:24346 发布时间:2011/5/11 14:59:00