《HTTP应用编程.doc》由会员分享,可在线阅读,更多相关《HTTP应用编程.doc(3页珍藏版)》请在金锄头文库上搜索。
1、实验九 HTTP应用编程一、实验目的:1、了解HTTP报文格式及请求主要命令。2、熟悉HTTP工作原理。3、熟悉WinInet组成实现HTTP类及作用。4、掌握HTTP应用编程方法。二、主要仪器设备:l 硬件:处理器:Pentium 233 MHz或更高处理器;内存:128 MB RAM或更高;硬盘空间:至少130 MB可用硬盘空间。l 软件:Windows XP、Professional等操作系统、VC+.NET2005。三、实验内容: 设计一个HTTP客户端程序并编码实现:输入服务器地址、网页地址、网页名称后显示给网页的内容。四、实验步骤及结果: 1、主要程序代码:#include Std
2、Afx.h#include MyHTTPClient.hconst int BUF_SIZE = 2048 ;CMyHTTPClient:CMyHTTPClient(void)/ Set the timeout value to 30 secondsm_InternetSession.SetOption (INTERNET_OPTION_CONNECT_TIMEOUT, 1000);m_InternetSession.SetOption (INTERNET_OPTION_RECEIVE_TIMEOUT, 1000);m_InternetSession.SetOption (INTERNET_O
3、PTION_SEND_TIMEOUT, 1000);p_HttpConnection = NULL ;m_hEventKill = CreateEvent (NULL, TRUE, FALSE, NULL);CMyHTTPClient:CMyHTTPClient(void)bool CMyHTTPClient:Download (const CString URLString, CString &strResponse, bool pbAbort)bool rr = false ;/打开远程资源文件CStdioFile* pStdioFile = m_InternetSession.OpenU
4、RL(URLString);if (pStdioFile)TCHAR bufferBUF_SIZE = 0;unsigned int nRead = BUF_SIZE;strResponse.Empty();/读取文件while ( (nRead = BUF_SIZE) & (WaitForSingleObject(m_hEventKill, 0) = WAIT_TIMEOUT) & (!pbAbort) )/ read remote data into buffernRead = pStdioFile-Read(buffer, BUF_SIZE);strResponse += buffer;
5、/关闭远程资源文件pStdioFile-Close ();delete pStdioFile;rr = true ;return rr ;bool CMyHTTPClient:Download (const CString sHost, const int nPort, const CString strObject, CString &strResponse, bool pbAbort)bool rr = false ;try/建立HTTP连接p_HttpConnection = m_InternetSession.GetHttpConnection(sHost,(INTERNET_PORT
6、)nPort);/打开远程资源文件CHttpFile* pHttpFile = p_HttpConnection-OpenRequest(CHttpConnection:HTTP_VERB_GET,strObject);if (pHttpFile)DWORD dwRet;pHttpFile-AddRequestHeaders(Test HTTP);pHttpFile-SendRequest();/发送请求pHttpFile-QueryInfoStatusCode(dwRet);/获取该请求的状态号以判断该请求成功与否if (dwRet = HTTP_STATUS_OK)TCHAR buffer
7、BUF_SIZE = 0;unsigned int nRead = BUF_SIZE;strResponse.Empty();/读取文件while ( (nRead = BUF_SIZE) & (WaitForSingleObject(m_hEventKill, 0) = WAIT_TIMEOUT) & (!pbAbort) )nRead = pHttpFile-Read(buffer, BUF_SIZE);strResponse += buffer;/关闭远程资源文件pHttpFile-Close ();delete pHttpFile;rr = true ;delete p_HttpConnection;catch (CInternetException Ex) /捕获并处理Internet异常AfxMessageBox(Internet异常);return rr ;