CInternetSesstion獲取網(wǎng)絡(luò)數(shù)據(jù)_第1頁
CInternetSesstion獲取網(wǎng)絡(luò)數(shù)據(jù)_第2頁
CInternetSesstion獲取網(wǎng)絡(luò)數(shù)據(jù)_第3頁
CInternetSesstion獲取網(wǎng)絡(luò)數(shù)據(jù)_第4頁
CInternetSesstion獲取網(wǎng)絡(luò)數(shù)據(jù)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論