C++如何实现打开url连接,并返回一个流对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++如何实现打开url连接,并返回一个流对象?相关的知识,希望对你有一定的参考价值。
因为是做NDK开发,所以不能用依赖windows平台的东东,找了半天也没找到相关的方法,就是第三方类库也行啊……
void CBaiduUseMfcMBDlg::OnBnClickedButton1()//判断是否可连接INTER网
if(InternetAttemptConnect(0) != ERROR_SUCCESS)
AfxMessageBox("无法连接INTERNET!");
return;
//创建internet连接
HINTERNET hInet = InternetOpen(
_T("downloader"),
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
NULL);
if(hInet == NULL)
AfxMessageBox("InternetOpen()失败!");
return;
//创建http请求头
TCHAR header[1024];
memset(header,0x0,sizeof(header));
int filelen = 8192;
_stprintf(header, _T("Range:bytes=%d-"), filelen);
//打开URL地址页面
HINTERNET hIurl = InternetOpenUrl(
hInet,
_T(""),
header,
-1,
0,
0);
if(hIurl == NULL)
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
::MessageBox( NULL, (LPCTSTR)lpMsgBuf, NULL, MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
InternetCloseHandle(hInet);
return;
//读取打开的页面内容
TCHAR buf[8192];
memset(buf,0x0,sizeof(buf));
DWORD dwR = 0;
if ( ! InternetReadFile(hIurl,buf,8192,&dwR) )
InternetCloseHandle(hInet);
InternetCloseHandle(hIurl);
AfxMessageBox("InternetReadFile()失败!");
return;
//输出
AfxMessageBox(buf);
//关闭打开的句柄
InternetCloseHandle(hInet);
InternetCloseHandle(hIurl);
参考技术A 打开url也就是要联网?联网需要socket,这种底层的东西,一般都是平台实现的吧
以上是关于C++如何实现打开url连接,并返回一个流对象?的主要内容,如果未能解决你的问题,请参考以下文章