请问CInternetSession::OpenURL 和 CInternetSession::GetHttpConnection 有什么不同?

haluo 2003-12-10 03:41:05
谢谢!
...全文
248 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangbc 2004-01-05
  • 打赏
  • 举报
回复
up
yangbc 2004-01-05
  • 打赏
  • 举报
回复
up
yangbc 2004-01-05
  • 打赏
  • 举报
回复
up
haluo 2003-12-10
  • 打赏
  • 举报
回复
多谢你,老刘。

对于您第三篇的回复中:

CInternetSession session;
CHttpConnection* pConnection =
session.GetHttpConnection(_T("ServerNameHere"));
CHttpFile* pFile =
pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,
_T("FormActionHere"));

"ServerNameHere" 和 "FormActionHere" 该怎么写?

譬如我想实现以下表单提交,该怎么具体实现:

<form name=f action=http://www1.baidu.com/baidu>
<input type=hidden name=cl value=3>
<input type=hidden name=tn value=baidu>
<input type=text name=word class=ff size=35>
<input type=submit value=百度搜索 name="submit">
</form>

谢谢!

laolaoliu2002 2003-12-10
  • 打赏
  • 举报
回复
可以通过WinInet类与Internet服务器建立连接、查询或接收文件,也可向服务器发送文件。使用WinInet类CInternetSession的对象,如果用协议HTTP、FTP或Gopher资源地址,URL (Uniform Resource Locator)可不必连接服务器,直接调用成员函数OpenURL()来得到一个只读的资源文件(CInternetFile),然后用CStdioFile类的成员函数去处理这些数据。如果想对服务器的内容进行更多的处理,可用CInternetConnection类的函数Get Ftp Connection ()、GetGopherConnection() 或GetHttpConnection()来实现每一种协议的连接处理,从中可见MFC类网络编程的强大功能。
laolaoliu2002 2003-12-10
  • 打赏
  • 举报
回复
CString strHeaders =
_T("Content-Type: application/x-www-form-urlencoded");
// URL-encoded form variables -
// name = "John Doe", userid = "hithere", other = "P&Q"
CString strFormData = _T("name=John+Doe&userid=hithere&other=P%26Q");

CInternetSession session;
CHttpConnection* pConnection =
session.GetHttpConnection(_T("ServerNameHere"));
CHttpFile* pFile =
pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,
_T("FormActionHere"));
BOOL result = pFile->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());

laolaoliu2002 2003-12-10
  • 打赏
  • 举报
回复
void CSp_14Dlg::GetURL(void)
{
UpdateData();
CInternetSession sess;//建立会话
CHttpFile* pF=(CHttpFile*)sess.OpenURL(m_szURL);//打开文件
CString szData,szAllData;
while(pF->ReadString(szData))
{//读取文件
szAllData+="\r\n";
szAllData+=szData;
}
pF->Close();
sess.Close();
m_szHTML=szAllData;
UpdateData(FALSE);
}

laolaoliu2002 2003-12-10
  • 打赏
  • 举报
回复
在建立会话后就可以利用CInternetSession::OpenURL打开一个URL,并读取数据,函数原型为:

CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址
DWORD dwContext = 1, //上下文ID
DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记
LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头
DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度

dwFlags可以为:
INTERNET_FLAG_RELOAD 强制重读数据
INTERNET_FLAG_DONT_CACHE 不保存到缓存
INTERNET_FLAG_TRANSFER_ASCII 使用文本数据
INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据

OpenURL的返回值为CStdioFile文件指针,函数会根据使用的协议返回不同的文件类指针,但这些类都是CStdioFile的派生类。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧