最近想用MFC做个课程表,考虑到课程一学期变一次,就不能把课程写死,可以使用现成的CURL库来模拟HTTP请求访问教务系统,采集课程信息。
首先在VS中简单的配置下CURL
1、下载CURL 打开http://curl.haxx.se/download.html 下载windows环境下的程序源码
2、打开目录下的vc6curl.sln工程,然后选择DLL Release编译
3、打开目录下的lib目录,进入DLL-Release中拷贝libcurl.dll和libcurl_imp.lib两个文件
4、打开VS新建一个空项目,创建一个main.cpp,写入测试代码
#include<stdio.h>
#include<iostream>
#include "./curl/curl.h"
#pragma comment(lib, "libcurl_imp.lib")
size_t write_data(void* buffer,size_t size,size_t nmemb,void *stream){
printf("%s",buffer);
return size*nmemb;
}
int main(){
using namespace std;
CURL *curl;
CURLcode res;
const char pURL[] = "http://www.baidu.com/";
const char pParameter[] = "password=123";
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, pURL);//url地址
curl_easy_setopt(curl,CURLOPT_POST,1); //设置问非0表示本次操作为post
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,pParameter); //post参数
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); //对返回的数据进行操作的函数地址
//curl_easy_setopt(curl,CURLOPT_WRITEDATA,fptr); //这是write_data的第四个参数值
curl_easy_setopt(curl,CURLOPT_VERBOSE,1); //打印调试信息
curl_easy_setopt(curl,CURLOPT_HEADER,1); //将响应头信息和相应体一起传给write_data
curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,true); //表示follow服务器返回的重定向信息。
curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1); //当进程处理完毕后强制关闭会话,不再缓存供重用
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10); //设置访问的超时
curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"curlposttest.txt");//包含cookie信息的文件
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "curlposttest.txt"); //连接结束后保存cookie信息的文件
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); //HTTP头中User-Agent的值
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
getchar();
return 0;
}
运行,会把百度的HTML源代码采集到,CURL配置成功