比如我在google里面搜索gmail,返回地址为:http://www.google.com/search?hl=zh-CN&ie=UTF-8&q=gmail&lr=然后我该如何把这个地址对应的网页下载到本地?
解决方案 »
- MFC的CWnd::SubclassDlgItem(),对应win32 api的什么函数?
- 请问,在一个用户界面线程中往主线程发消息,可怎么获得主线程的窗口句柄啊?
- 分割窗口的问题
- 文本框中直接如何输入俄文?
- 谁能给我一个分页打印scrollview的例子?纸很小(A4)但是scrollview很大,如果解决了问题再送100分
- CInternetSession OpenURl问题
- 怎么样为一个应用程序增加双接口或派发接口?
- ClistCtrl中。如何控制某一行,某一列的背景颜色?
- 用cximage显示数据图像问题
- opengl 问题?
- 提个建议:怎么样用vc做一个留言版?(就是用户输入一个字符串,然后把这个字符串写到数据库中)
- 关于CTime类的问题
{
// TODO: 在此添加控件通知处理程序代码 CString strURL = "http://www.google.com/search?hl=zh-CN&ie=UTF-8&q=gmail&lr="; //网址
CStdioFile sF("C:\\Save.htm", CFile::modeCreate | CFile::modeWrite); //本地存盘路径 CInternetSession sess;
CHttpFile* pF=(CHttpFile*)sess.OpenURL(strURL); CString szData;
while(pF->ReadString(szData))
{
szData += "\r\n";
sF.Write(szData, szData.GetLength());
}
}
while(fileGet->ReadString(strSentence))
fileWrite.WriteString(strSentence+"\n");
fileWrite.Close();
掌握了读取网页的技术,同时也就能够用GET方式来发送数据了,例如把strWriteName改成“progsave.asp?curl=中国人&http=http://www.chinaren.com” 你就能够向松鼠之家提交你的中文网址。可是,GET方式来发送数据有一个限制,就是发送的数据不能太长。具体数值我没有查到,但是当strWriteName的长度大于3000字节时就会出错。为了让用户一次能传送更多的中文网址,我采取了POST的方式发送。当然, POST方式同样也有长度限制,但是比起GET更长得多。请看下一页: 用POST方式发送数据以下程序在NT4,VISUAL C6.0上调试通过。
CString strWriteName="Template01.htm"
#ifndef _DEBUG
strFileName="http://www.fadshop.net/curl/" + strWriteName;
#else //如果是DEBUG版本就在本机的IIS上读取。
strFileName="http://mycomputer/fadshop/curl/" + strWriteName;
#endif
CInternetSession sess;//建立会话
CHttpFile* fileGet;
CException* e;
TRY
{
fileGet=(CHttpFile*)sess.OpenURL(strFileName);//打开文件
}
CATCH_ALL(e)
{
fileGet = 0;
}
END_CATCH_ALL if(fileGet)
{
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = fileGet->QueryInfo(
HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen); if( bSuccess && dwStatus>= 200&& dwStatus<300 )
{ CStdioFile fileWrite;
if(fileWrite.Open(strWriteName, Cfile::modeWrite|Cfile::modeCreate))
{ while(fileGet->ReadString(strSentence)){
fileWrite.WriteString(strSentence+"\n");
}
fileWrite.Close();
SetDlgItemText(IDC_DOWNMSG, "下载完毕,正在导入...");
导入该文件,与本话题无关
}// if openfile success.
else
SetDlgItemText(IDC_DOWNMSG,
"本地文件"+strWriteName+"打开出错\n请检查您的硬盘是否没有空间。");
} // if bSuccess.
else
SetDlgItemText(IDC_DOWNMSG,
"网上没有更新的中文网址模板\n请下次再执行,或者到松鼠之家查看最新信息。"); fileGet->Close();
delete fileGet;
}
else
SetDlgItemText(IDC_DOWNMSG, "网络不通,请检查你的网络连接情况。");
sess.Close();