用wininet 登录邮箱并保存登录后的网页

华亭真人 2009-02-02 08:10:19
请高手指点一下,邮箱是www.126.com 现在的问题是如何读出网页并把它写在.htm文件中
我这样写就会提示"找不到指定的文件!",
代码如下:


CString strObject;
INTERNET_PORT nPort;
CString strFormData;
CString strServer;
DWORD dwServiceType;
CInternetSession g_Session_HG("My Session");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;

CString strURL="http://www.126.com";
CString strRetMsg;
strFormData=_T("user=yindoor123&password=123456&style=-1&remUser=checked&secure=checked");

CString strHeader=_T("Content-Type:text/html; charset=gb2312\r\n");


if(!AfxParseURL(strURL,dwServiceType,strServer,strObject,nPort)||
dwServiceType != INTERNET_SERVICE_HTTP)
{
MessageBox(_T("不是HTTP站点"),_T("错误"));
return ;
}

pServer = g_Session_HG.GetHttpConnection(strServer,nPort);
strObject=_T("logins.jsp");
pFile = pServer->OpenRequest("POST",strObject);
pFile->SendRequest(strHeader,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());

CString str;
CString a;
while(pFile->ReadString(a))
{
str+=a;
str+="\r\n";
}

SetDlgItemText(IDC_EDIT1,str);
pFile->
delete pFile;
delete pServer;
...全文
260 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
华亭真人 2009-02-04
  • 打赏
  • 举报
回复
没必要通用了..现在我能把一个做好就行了
华亭真人 2009-02-04
  • 打赏
  • 举报
回复
求一个具体的方案...不会用抓包工具啊
jameshooo 2009-02-04
  • 打赏
  • 举报
回复
HTTP/1.1 200 OK 仅仅表示HTTP协议层成功,登录是否成功是上层的事情,有可能的话通过cookie内容来判断是否登录成功,但这种做法没有通用性。
华亭真人 2009-02-04
  • 打赏
  • 举报
回复
用pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,str);

会出现

HTTP/1.1 200 OK
Date: Wed, 04 Feb 2009 03:06:42 GMT
Server: Apache
X-Powered-By: Servlet 2.4; JBoss-4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)/Tomcat-5.5
X-Category:
Set-Cookie: cookie2=0569104b05abd1d94b009b5004a90343; Domain=.taobao.com; Path=/
Set-Cookie: uc1=cookie14=KPtHck8TElRKsw%3D%3D; Domain=.taobao.com; Path=/
Content-Language: zh-CN
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html;charset=GBK

华亭真人 2009-02-04
  • 打赏
  • 举报
回复
现在不管账号密码是多少都会返回HTTP/1.1 200 OK

我怎么才能知道自己登录成功了呢?
jameshooo 2009-02-04
  • 打赏
  • 举报
回复
需要自己试验cookie的内容,在成功登录和不成功登录等多种情况下查看cookie内容有何不同,找出规律来。
华亭真人 2009-02-03
  • 打赏
  • 举报
回复
POST成功的标志呢, 要做一个提示吧
华亭真人 2009-02-03
  • 打赏
  • 举报
回复
那么,就检测它的返回值吧,
如果我的账号密码正确,会返回什么呢?
jameshooo 2009-02-03
  • 打赏
  • 举报
回复
返回的只有HTML文件或者重定向的URL,根据URL或者文件内容来判断。
jameshooo 2009-02-02
  • 打赏
  • 举报
回复
涉及到登录的网站往往需要传递合适的COOKIE,否则服务器端无法保持会话,会认为用户从未登录,从而返回一个错误的HTML文件。建议抓包检测。
华亭真人 2009-02-02
  • 打赏
  • 举报
回复
郁闷啊,我们经理认为这太简单了...好像www.126.com?user=&password= 就好了...
这是GET方法啊,126好像不支持的
华亭真人 2009-02-02
  • 打赏
  • 举报
回复
先把126 这个研究好...其它的慢慢收集吧
opens555 2009-02-02
  • 打赏
  • 举报
回复
ding
noenoughmemory 2009-02-02
  • 打赏
  • 举报
回复
ding
arong1234 2009-02-02
  • 打赏
  • 举报
回复
不同网站的登陆form是不一样的,因此一个网站工作的在另外一个不一定工作
华亭真人 2009-02-02
  • 打赏
  • 举报
回复
返回解析后的网址也可以啊.主要是想在我的软件里显示出来.这样方便
华亭真人 2009-02-02
  • 打赏
  • 举报
回复
form是在www.126.com的网页里的。strFormData传的应该是表单的各项

strObject=Logins.Jsp肯定不对 MSDN上说传formaction进去, 但是它网页里的form action="http://entry.126.com/cgi/login" 传这个的结果也一样:

“系统提示,您要找的文件服务器找不到"

现在的问题就是strObject到底是什么东西。。。。应该如何操作呢?
arong1234 2009-02-02
  • 打赏
  • 举报
回复
建议你用抓包软件看看人家发送时到底发送的时什么

感觉OpenRequest不应该发送Logins.jsp,而是strFormData
Logins.jsp应该时URL的一部分

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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