如何用BCB向一个网站自动Post后,取到返回的html内容?

BCB 2006-06-18 09:03:05
有一个据考试证号查小孩考试成绩的网站,
http://www.url.com/scorecx.asp, 手工输入证号参数后,点查询按钮,
它提交(Post)到(action="http://www.url.com/xscloginscore.asp")
后,自动返回http://www.url.com/xscuserloginscore.asp页面,
可看到姓名、成绩,这一切都是手动输入的!
我现在想取得所有学生的分数(已知道证号是连续范围),
想让程序自动提交证号,再从返回的页面中析取得成绩。
我已将提交的页面 http://www.url.com/scorecx.asp 保存到本机文件中:
C:\chaFS\chaFS.htm 并用文一编辑器将证号填入其中,
在IE中显示c:\chaFS\chaFS.htm,人工点"发送"(POST),
就能返回查询的分数结果;现在我的要求是,:
1. 如何自动POST c:\chaFS\chaFS.htm
2. 取得返回的: http://www.url.com/xscuserloginscore.asp内容
只要这两步,求助!!!!!








...全文
1134 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
小笨象 2006-10-30
  • 打赏
  • 举报
回复
这段代码,貌似以前看过。
BCB 2006-10-29
  • 打赏
  • 举报
回复
蒋老大的这段代码到现在才明白一点,马上要总结一下
BCB 2006-09-22
  • 打赏
  • 举报
回复
to 蒋老大
没有一点解释或注解,不知怎样用?
wfhlxl 2006-09-08
  • 打赏
  • 举报
回复
TIdHTTP 这个一定能行的
this->IdHTTP1->Post("");
玄之丞 2006-09-08
  • 打赏
  • 举报
回复
IHTMLDocument2 接口,很煩人的說.
至少30行以上的代碼

更傾向與用 javascript 方法來實現. 一行就可以直接post了
sncel 2006-09-08
  • 打赏
  • 举报
回复
留下mail,给你个http访问类,不用这些组件操作.
daydayup234 2006-09-07
  • 打赏
  • 举报
回复
TO yhec
-------------------------------------------
WebPostData(CppWebBrowser1,"http://www.baidu.com/","太阳");
这个错

这个目标怎么调用WebPostData?
wanglovec 2006-09-07
  • 打赏
  • 举报
回复
呵呵, 这么多高手都来了.我原来用VB写了一个 .(网上抓取数据 写入数据库中)窃 楼主应该先分析 网页

希望高手们不要BS 呵呵
daydayup234 2006-09-07
  • 打赏
  • 举报
回复
TO jiangsheng(蒋晟.Net[MVP])
-------------------------------------------
Submit(void)针对
http://www.url.com/scorecx.asp如何用

如何改?

yhec 2006-09-07
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/16/16129.shtm
蒋晟 2006-09-06
  • 打赏
  • 举报
回复
CSDN那个有图片验证码的……
daydayup234 2006-09-06
  • 打赏
  • 举报
回复
蒋老大的代码怎样应用在
http://passport.csdn.net/UserLogin.aspx
只post
出错


BCB 2006-09-06
  • 打赏
  • 举报
回复
大家也邦我试试,
蒋晟 2006-09-05
  • 打赏
  • 举报
回复
#include <Mshtml.h>
AnsiString __fastcall TForm3::Submit(void)
{
IHTMLDocument2 *pHTMLDoc = NULL;
LPDISPATCH pDisp = NULL;
pDisp =CppWebBrowser1->Document;
if(pDisp)
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
pDisp->Release();
IHTMLElementCollection *pelement;
if(pHTMLDoc->get_forms(&pelement)!=S_OK)
{
pHTMLDoc->Release();
pDisp->Release();
pelement->Release();
return "1发送失败";
}
pDisp->Release();
tagVARIANT a,i;
a.vt=VT_UI4;
a.lVal=0;//这个值为你所要填写的表单在整个网页中的顺序,0为第一个表单
if(pelement->item(a,i,&pDisp)!=S_OK)
{
pelement->Release();
pDisp->Release();
return "2发送失败";
}
pelement->Release();
IHTMLFormElement* pFormElem=NULL;
if(pDisp)
{
if(!SUCCEEDED(pDisp->QueryInterface(IID_IHTMLFormElement,(LPVOID*)&pFormElem)))
{
pFormElem->Release();
pDisp->Release();
return "3发送失败";
}
}
else
{
return "31发送失败";
}
pDisp->Release();
LPDISPATCH pDisp_msg = NULL;
tagVARIANT phone,msg,empty;
phone.vt=VT_UI4;
phone.lVal=0;//这个值为Input框在表单中的顺序
msg.vt=VT_UI4;
msg.lVal=1;//这个值为Text文本框在表单中的顺序
if((pFormElem->item(phone,empty,&pDisp)!=S_OK)||(pFormElem->item(msg,empty,&pDisp_msg)!=S_OK))
{
pFormElem->Release();
if(pDisp)
pDisp->Release();
if(pDisp_msg)
pDisp_msg->Release();
return "4发送失败";
}
IHTMLInputTextElement* phoneElem=NULL;
IHTMLTextAreaElement* msgElem;
if(!pDisp||!pDisp_msg)
return "11失败";
if (!SUCCEEDED(pDisp->QueryInterface(IID_IHTMLInputTextElement, (void**)&phoneElem))||(!SUCCEEDED(pDisp_msg->QueryInterface(IID_IHTMLTextAreaElement, (void**)&msgElem))))
{
if(phoneElem)
phoneElem->Release();
if(msgElem)
msgElem->Release();
if(pDisp)
pDisp->Release();
if(pDisp_msg)
pDisp_msg->Release();
return "5发送失败";
}
WideString s_phone,s_msg;
s_phone="888888"
s_msg="你好";
phoneElem->put_value(s_phone.c_bstr());//填写
msgElem->put_value(s_msg.c_bstr());//填写
pFormElem->submit();//提交
phoneElem->Release();
msgElem->Release();
pDisp->Release();
pDisp_msg->Release();
pFormElem->Release();
return "发送成功";
}
}
return "发送失败";
}
netliuming 2006-09-05
  • 打赏
  • 举报
回复
确实使用indy idhttp很易实现。
truelove7283159 2006-09-05
  • 打赏
  • 举报
回复
首先学习一下
BCB 2006-09-05
  • 打赏
  • 举报
回复
呵呵,我以为这个贴子已无人解决,
我来看看,首先表示感谢!
revulet 2006-09-04
  • 打赏
  • 举报
回复
使用indy idhttp应该很容易实现
jcsun 2006-08-17
  • 打赏
  • 举报
回复
请参见BCB自带的例子:
C:\Program Files\Borland\CBuilder6\Examples\FastNet\HTTP
BCB 2006-06-19
  • 打赏
  • 举报
回复
呵呵,老妖出山就有希望!
问题是用的是Post,不是Get,这下面是你在别的贴子中的留言:
取得该页面的IHTMLDocument2接口,然后通过get_forms和item方法取得表单,通过 IHTMLFormElement接口的的submit方法进行提交。
具体怎做呢?
加载更多回复(3)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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