急、急!!求高手赐教,怎样用MFC自动登录网页

狐独者 2013-08-22 08:12:56
在下是新手,公司让我做一个登录接口,我没有经验,自己摸索不出方案,恳求高手指点迷津。
具体要求是用MFC或C++写个服务器端的程序,当客户端传来数据时,把数据自动填写到指定的网页上并提交。
总之就是模拟登录。
恳求高人给些思路,告诉我要用哪些类和哪些函数。感激不尽。
...全文
358 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuz263963 2013-10-29
  • 打赏
  • 举报
回复
能把你做的给我参考么,我也是新手,最近也在做跟你类似的东西。qq531393767
725137 2013-08-28
  • 打赏
  • 举报
回复
直接发送一个http请求过去就行了啊。http包网上一大堆的。根本不需要用到WebBrowser,用到WebBrowser的大部分情况是显示一个网页界面,然后就像按键精灵一样的方式。
狐独者 2013-08-28
  • 打赏
  • 举报
回复
感谢诸位给予的提示,虽然对我没有起到实质性作用。 经过一个多星期连天加夜的努力(我是新手,很多东西要学),终于成功了。 诸位给的方向确实是正确的。我一开始用的就是WebBrowser控件,不想中途改用其他方法。因为这样又要从头开始。 现在回顾,oyljerry前辈的话虽然简短,确是精确无误的。
狐独者 2013-08-24
  • 打赏
  • 举报
回复
源文件里表单如下: <form id="loginForm" onsubmit="saveUsername(this);return validateForm(this)" method="post"> 我的代码是这样: if(SUCCEEDED(spDocument2->get_all(&spElementCollection))) { CComPtr<IDispatch> spDisp; HRESULT hr; hr = spElementCollection->item(CComVariant("loginForm"),CComVariant((long)0), &spDisp); if(SUCCEEDED(hr)) { CComQIPtr<IHTMLFormElement>spForm = spDisp; spForm->submit(); } } 其中最后一句spForm我试验用spForm->reset(),则表单已填内容就消失,说明spForm确实能操纵表单了, 但用submit时就会约3到4秒的时间后,控件里的网页跳到一个显示着“系统错误”的页面。 既不是登录成功,也不是登录失败,这是什么原因??? 诚心请求高人解惑。
oyljerry 2013-08-23
  • 打赏
  • 举报
回复
那就根据type是submit来找,然后出发click
狐独者 2013-08-23
  • 打赏
  • 举报
回复
首先感谢各位热心网友给予的启示和帮助。 我在网上搜了很多,用socket发包也看到过,但那是底层协议方式,我看别人写的代码里还有什么抓包之类,传递的字符串内容也不甚了解,我对套接字不是很熟。 我现在是用WebBrowser控件关联的CWebBrowser2类实现了打开网页并自动填写表单,但问题又来了: 我无法让表单提交,我查看网页源码发现提交按钮没有id和name,如下: <input type="submit" value=" " class="button"/> 我现在想请教如何操纵这个按钮使其触发submit事件从而提交表单。
狐独者 2013-08-23
  • 打赏
  • 举报
回复
在线等
狐独者 2013-08-23
  • 打赏
  • 举报
回复
我已经搞了几天,还是搞不出来,因为知道CSDN里面有高手,只好来求助,求高人指点。
狐独者 2013-08-23
  • 打赏
  • 举报
回复
我用的WebBrowser控件,将其关联了一个Control变量,已经用Navigate在控件里打开了网页,但是我不知道用什么函数来填写里面的表单。 我在网上搜的代码复制上去运行有问题。 CComPtr < IDispatch > spDispDoc; CComQIPtr< IHTMLDocument2 > spDocument2; CComQIPtr<IHTMLElementCollection> spElementCollection; //在控件里打开网页,test是我传过来的this指针 test->m_webBrowser.Navigate("http://www.11185.com.cn/user/login.html",NULL,NULL,NULL,NULL); spDispDoc=(IDispatch *)test->m_webBrowser.GetDocument(); //下面这句运行出错。好像是因为指针不能为空 spDispDoc->QueryInterface(IID_IHTMLDocument2,(void **)&spDocument2);
专写匿名信 2013-08-23
  • 打赏
  • 举报
回复
socket 发送http请求..
fishion 2013-08-22
  • 打赏
  • 举报
回复
搜索下“VC 网页 填写表单”
oyljerry 2013-08-22
  • 打赏
  • 举报
回复
用WebBrowser控件
狐独者 2013-08-22
  • 打赏
  • 举报
回复
求高人指点,在线等。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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