版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、最近做了個項(xiàng)目,用VC開發(fā),很有技術(shù)難度,習(xí)慣了Java開發(fā),VC都忘差不多啦,呵呵 為了吃飯,硬著頭皮也得做下去啊。項(xiàng)目里面用到了獲取網(wǎng)頁數(shù)據(jù),需要http header 來驗(yàn)證客戶端合法性,找了些資料,都有問題。還是自己寫吧,用 CInternetSession/頭部包含afxinet.h #include <afxinet.h>CInternetSession:OpenURL函數(shù)原型為: CStdioFile* OpenURL( LPCTSTR pstrURL, /文件URL地址 DWORD dwContext = 1, /上下文ID DWO
2、RD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, /標(biāo)記 LPCTSTR pstrHeaders = NULL, /發(fā)送到服務(wù)器的數(shù)據(jù)頭 DWORD dwHeadersLength = 0 );/發(fā)送到服務(wù)器的數(shù)據(jù)頭長度dwFlags可以為:INTERNET_FLAG_RELOAD 強(qiáng)制重讀數(shù)據(jù) INTERNET_FLAG_DONT_CACHE 不保存到緩存 INTERNET_FLAG_TRANSFER_ASCII 使用文本數(shù)據(jù) INTERNET_FLAG_TRANSFER_BINARY 使用二進(jìn)制數(shù)據(jù) /獲取網(wǎng)頁的方法代碼如下CSt
3、ring getURLContext(LPCTSTR pstrURL) /自定義http頭信息 char* headers="Accept:*/*rn" "Accept-Language:zh-cnrn" "User-Agent:VCTestClientrn" CString m_strHTML; try CInternetSession sess;/建立會話 CHttpFile* pF=(CHttpFile*)se
4、ss.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD,headers,strlen(headers);/打開文件 注意:OpenURL 方法的dwFlags參數(shù) 必須選擇傳輸模式為INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY CString szData,szAllData; while(pF->ReadString(szData) &
5、#160; /讀取文件 szAllData+="rn" szAllData+=szData; pF->Close(); sess.Close(); m_strHTML=szAllData; catch(CException *e) AfxMessageBox("獲取數(shù)據(jù)失敗"); return
6、m_strHTML;希望能對需要的朋友有幫助。/下載文件的方法/url:網(wǎng)絡(luò)文件地址,:保存到磁盤的文件名bool Down url,CString ) bool result=false; try /自定義http頭信息 char* headers="Accept:*/*rn" "Accept-Language:zh-cnrn" "User-Agent:VCTestClientrn" HINTERNET hNet = InternetOpen("Ou
7、tlook",PRE_CONFIG_INTERNET_ACCESS,NULL,INTERNET_INVALID_PORT_NUMBER,0) ; HINTERNET hUrlFile = InternetOpenUrl(hNet,url,headers,strlen(headers),INTERNET_FLAG_RELOAD,0); char buffer10*1024 ; DWORD dwBytesRead = 1; BOOL bRead=TRUE; C; ();/創(chuàng)建本地文件,準(zhǔn)備寫入數(shù)據(jù) while(bRea
8、d&&dwBytesRead>0) bRead = InternetRead(buffer),&dwBytesRead); if(dwBytesRead>0) (buffer,dwBytesRead); InternetCloseHandle(hUrlFile) ; InternetCloseHandle(hNet) ; (); result=true; catch(CException *e) result=false;
9、160; return result; 利用CInternetSession從網(wǎng)站獲取信息,并利用CString拆分查找特定信息2008-6-3 網(wǎng)絡(luò)點(diǎn)擊:58 評論 -#include "stdafx.h"#include "HttpRequest.h"#include "HttpRequestDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/*/ CHttpRequestDl
10、g dialogCHttpRequestDlg:CHttpRequestDlg(CWnd* pParent /*/*=NULL*/) : CDialog(CHttpRequestDlg:IDD, pParent). /AFX_DATA_INIT(CHttpRequestDlg) /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CHttpRequestDlg:Do
11、DataExchange(CDataExchange* pDX). CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CHttpRequestDlg) DDX_Control(pDX, IDC_TITLE_END, m_titleend); DDX_Control(pDX, IDC_TITLE_START, m_titlestart); DDX_Control(pDX, IDC_HREF_LIST_END, m_hreflistend); DDX_Control(pDX, IDC_HREF_LIST_START, m_hrefliststart); DDX_
12、Control(pDX, IDC_MSG, m_msg); DDX_Control(pDX, IDC_HTTP_ADDR, m_httpaddr); DDX_Control(pDX, IDC_HREF_START, m_hrefstart); DDX_Control(pDX, IDC_HREF_END, m_hrefend); DDX_Control(pDX, IDC_CON_START, m_constart); DDX_Control(pDX, IDC_CON_END, m_conend); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CHttpRequestDlg, C
13、Dialog) /AFX_MSG_MAP(CHttpRequestDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_START_MSG, OnStartMsg) /AFX_MSG_MAPEND_MESSAGE_MAP()/*/ CHttpRequestDlg message handlersBOOL CHttpRequestDlg:OnInitDialog(). CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this aut
14、omatically / when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here /*/ /先初始化/ m_httpaddr.SetWindowText(""); m_hrefliststart.SetWindowText(" <td class=fontindex14p
15、x width=643 bgColor=#ffffff><STRONG>深圳新聞</STRONG></td>"); m_hreflistend.SetWindowText(" <table cellSpacing=0 cellPadding=0 width=650 align=center border=0>"); m_hrefstart.SetWindowText("href=""); m_hrefend.SetWindowText("""); m_
16、titlestart.SetWindowText("<title>"); m_titleend.SetWindowText("_深圳新聞_深圳人</title>"); m_constart.SetWindowText("<td class=news-zhengwenneirong>"); m_conend.SetWindowText("</P></P></td>"); /*/ return TRUE; / return TRUE unless
17、you set the focus to a control/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CHttpRequestDlg:OnPaint() . if (IsIconic() . CPaintDC dc(this); /
18、 device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect
19、.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon); else . CDialog:OnPaint(); / The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CHttpRequestDlg:OnQueryDragIcon(). return (HCURSOR) m_hIcon;void CHttpRequestDlg:OnCancel() .
20、/ TODO: Add extra cleanup here CDialog:OnCancel();void CHttpRequestDlg:OnOK() . / TODO: Add extra validation here /CDialog:OnOK();/檢測用戶所填寫的是否為空BOOL CHttpRequestDlg:checkedit(). BOOL Cando=true; if(m_httpaddr.GetWindowTextLength()=0) Cando=false; if(m_hrefliststart.GetWindowTextLength()=0) Cando=fals
21、e; if(m_hreflistend.GetWindowTextLength()=0) Cando=false; if(m_hrefstart.GetWindowTextLength()=0) Cando=false; if(m_hrefend.GetWindowTextLength()=0) Cando=false; return Cando;/*/獲取首頁信息/void CHttpRequestDlg:OnStartMsg() . if(!checkedit() . MessageBox("請?zhí)顚懲暾畔ⅲ?quot;,NULL,MB_OK); else . CInternet
22、Session mySession(NULL,0); CHttpFile* myHttp; CString newsdata; m_httpaddr.GetWindowText(newsdata); myHttpFile=(CHttpFile*)mySession.OpenURL(newsdata);/打開連接 CString myData; newsdata = "" while(myHttpFile->ReadString(myData)/循環(huán)讀文件信息 . newsdata=newsdata+" " newsdata+=myData; myH
23、ttpFile->Close() ; mySession.Close() ; /m_msg.SetWindowText(newsdata); PrintHref(newsdata);/獲取新聞連接列表/ /獲取新聞連接列表/void CHttpRequestDlg:PrintHref(CString printstr). CString str=printstr,strtemp,strnew,hrefstr="" int istart=0,iend=0; /獲取鏈表范圍 m_hrefliststart.GetWindowText(strtemp); istart =
24、str.Find(strtemp); m_hreflistend.GetWindowText(strtemp); iend = str.Find(strtemp); strnew = str.Mid(istart,iend-istart); /在鏈表范圍內(nèi)循環(huán)讀新聞連接 for(int i=0;i<8;i+). m_hrefstart.GetWindowText(strtemp); istart = strnew.Find(strtemp); istart = istart+strtemp.GetLength(); strnew = strnew.Mid(istart); m_hrefe
25、nd.GetWindowText(strtemp); iend = strnew.Find(strtemp); hrefstr = hrefstr+strnew.Mid(0,iend)+" " m_msg.SetWindowText(hrefstr); PrintCon(hrefstr);/分析新聞連接列表/分析新聞連接列表/void CHttpRequestDlg:PrintCon(CString constr). CString str=constr,strtemp,strnew; int istart=0,iend=0; for(int i=0;i<8;i+).
26、 istart = str.Find(" "); strnew = str.Left(istart); /*/*/ /*/*對每一個連接分析內(nèi)容*/ /*/*/ GetNewsCon(strnew);/獲取一個新聞內(nèi)容/ /*/*/ istart = istart + 2; str = str.Mid(istart); /m_msg.SetWindowText(str);/獲取一個新聞內(nèi)容/void CHttpRequestDlg:GetNewsCon(CString NewsUrl). CInternetSession mySession(NULL,0); CHttpFile* myHttp; myHttpFile=(CHttpFile*)mySession.OpenURL(NewsUrl); CString myData; CString newsdata = "" while(myHttpFile->ReadString(myData) . newsdata=newsdata+&qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度家居建材一站式購銷合同示范文本3篇
- 2025年食品委托加工合同樣本
- 二零二五年度基礎(chǔ)設(shè)施工程設(shè)計合同終止及工程移交協(xié)議3篇
- 2025版建筑地坪材料采購單價合同3篇
- 二零二五年度農(nóng)家樂餐廳承包經(jīng)營合同2篇
- 二零二五年度農(nóng)產(chǎn)品電商平臺運(yùn)營與物流配送合同3篇
- 感恩潤心田青春助力中國夢
- 二零二五年度房屋買賣與安防系統(tǒng)安裝簡易合同3篇
- 二零二五年度個人汽車貸款擔(dān)保合同范例2篇
- 《OLT設(shè)備型號大全》課件
- 就業(yè)招聘服務(wù)行業(yè)經(jīng)營模式分析
- 港口液體?;费b卸管理人員理論考試題庫-下(判斷題)
- 2024關(guān)于家長會家長代表發(fā)言稿(30篇)
- 中醫(yī)內(nèi)科學(xué):中醫(yī)內(nèi)科學(xué)肢體經(jīng)絡(luò)病證考試題(題庫版)
- 高中生物學(xué)科思維導(dǎo)圖(人教版必修一)
- NB-T10859-2021水電工程金屬結(jié)構(gòu)設(shè)備狀態(tài)在線監(jiān)測系統(tǒng)技術(shù)條件
- GJB9001C產(chǎn)品風(fēng)險評估報告
- 2024年天津三源電力集團(tuán)限公司社會招聘33人【重點(diǎn)基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 水利工程施工單位竣工資料目錄
- 技術(shù)經(jīng)濟(jì)學(xué)(中國石油大學(xué)(華東))-知到答案、智慧樹答案
- 《中國高鐵作業(yè)設(shè)計方案-2023-2024學(xué)年科學(xué)冀人版》
評論
0/150
提交評論