delphi6的NMHTTP或delphi7的IDHTTP保存网页的问题?

时间:2021-03-27 17:35:16
我想用delphi6的NMHTTP或delphi7的IDHTTP自动保存网页的内容,但是像URL如:http://www.xxx.com/aa.htm的可以。但是像:http://www.xxx.com/getvalue.asp?id=xxx的就不行了。应该怎么设置?还有访问的网站是要用户名和密码的,应该怎么设置?一经验证马上给分!

7 个解决方案

#1


怎么没人理我,指点一下吗?我自己顶

#2


我打不開NI的http://www.xxx.com/aa.htm、無法判断NI的是GET還是POST方式、
給NI一個在CSDN可用(POST方式)的先試試。

procedure TForm1.Button1Click(Sender: TObject);
var
  postList: TStrings;
begin
  EditURL.Text := 'http://community.csdn.net/expert/forum.asp';

  postList := TStringList.Create;
  try
    postList.Add('login_name=cronuz');
    postList.Add('password=myPassword');
    IdHTTP.Post( EditURL.Text, postList );
  finally
    EditURL.Text := IdHTTP.Response.Server + ': ' + IdHTTP.Response.ResponseText;
    postList.Free;
  end;
end;

(注:此為在CSDN上的TEST、楼主只要改成自己在CSDN上的用户名和密码、
   就可叫通CSDN、返回:Microsoft-IIS/6.0: HTTP/1.1 200 OK)

#3


谢谢cronuz(cronus) !
我对你这个写法还不是很清楚,因为我不知道要访问的网站是用什么来验证的
postList.Add('login_name=cronuz');postList.Add('password=myPassword');?
这个是可以看到的吗?login_name和password是验证页的变量吧?
关键是我要保存查看的网页的内容:我用如下代码。但是登录不进去。麻烦帮我看看!
    IdHTTP.Request.Username := edUsername.Text;
    IdHTTP.Request.Password := edPassword.Text;
    memoHTML.Lines.Text := IdHTTP.Get(cbURL.Text);

#4


"我不知道要访问的网站是用什么来验证的"
這様我就不好説什么了、按NI的做法是Basic認証方法。

Java一般有四種認証方法:
  HTTP Basic, HTTP Digest, HTTP Form-based, HTTPS Client

前二種認証方法是WEB Server設定後、弾出Windows的対話框,等待輸入Name和Password。
第三種是出一個自己做的認証頁(如:CSDN的),然後輸入Name和Password。
第四種是SSL、没看国内用過。

NI的多半也是第三種、NI只要能把登録那頁給我看看就行。
上面給的、我看不了、一打開就要下載此文件→Nippon_Sex.exe??
或NI自己

#5


阿! 怎麼自動発送了、hehe~~~

或NI自己看看在登録那頁的SOURCE。

例:CSDN的登録頁:
<form  method="post" name="loginForm" onsubmit="return submitlog(true);" action="/member/logon.asp" ID="Form1"> 
 <TD width="18%" height=21>用户名</TD>
 <TD width="39%" height=21 align="left">
   <input class=unnamed1 size=19 name=login_name ID="login_name"></TD>
 <TD width="18%" height=30>密码</TD>
 <TD width="39%" height=30 align="left">
 <input class=unnamed1 type=password size=19 name=password ID="password">
</form>

↑在<form>...</form>中”name=login_name”和”name=password”
在CSDN的登録頁、这个是可以看到的login_name和password是验证页的变量。 

#6


谢谢!
你的意思是不是我这样登录后,以后再用IdHTTP访问其它网页,就可以了。访问其它网页时要怎么操作??带着Cookie吗?

#7


好了。结贴。谢谢斑竹

#1


怎么没人理我,指点一下吗?我自己顶

#2


我打不開NI的http://www.xxx.com/aa.htm、無法判断NI的是GET還是POST方式、
給NI一個在CSDN可用(POST方式)的先試試。

procedure TForm1.Button1Click(Sender: TObject);
var
  postList: TStrings;
begin
  EditURL.Text := 'http://community.csdn.net/expert/forum.asp';

  postList := TStringList.Create;
  try
    postList.Add('login_name=cronuz');
    postList.Add('password=myPassword');
    IdHTTP.Post( EditURL.Text, postList );
  finally
    EditURL.Text := IdHTTP.Response.Server + ': ' + IdHTTP.Response.ResponseText;
    postList.Free;
  end;
end;

(注:此為在CSDN上的TEST、楼主只要改成自己在CSDN上的用户名和密码、
   就可叫通CSDN、返回:Microsoft-IIS/6.0: HTTP/1.1 200 OK)

#3


谢谢cronuz(cronus) !
我对你这个写法还不是很清楚,因为我不知道要访问的网站是用什么来验证的
postList.Add('login_name=cronuz');postList.Add('password=myPassword');?
这个是可以看到的吗?login_name和password是验证页的变量吧?
关键是我要保存查看的网页的内容:我用如下代码。但是登录不进去。麻烦帮我看看!
    IdHTTP.Request.Username := edUsername.Text;
    IdHTTP.Request.Password := edPassword.Text;
    memoHTML.Lines.Text := IdHTTP.Get(cbURL.Text);

#4


"我不知道要访问的网站是用什么来验证的"
這様我就不好説什么了、按NI的做法是Basic認証方法。

Java一般有四種認証方法:
  HTTP Basic, HTTP Digest, HTTP Form-based, HTTPS Client

前二種認証方法是WEB Server設定後、弾出Windows的対話框,等待輸入Name和Password。
第三種是出一個自己做的認証頁(如:CSDN的),然後輸入Name和Password。
第四種是SSL、没看国内用過。

NI的多半也是第三種、NI只要能把登録那頁給我看看就行。
上面給的、我看不了、一打開就要下載此文件→Nippon_Sex.exe??
或NI自己

#5


阿! 怎麼自動発送了、hehe~~~

或NI自己看看在登録那頁的SOURCE。

例:CSDN的登録頁:
<form  method="post" name="loginForm" onsubmit="return submitlog(true);" action="/member/logon.asp" ID="Form1"> 
 <TD width="18%" height=21>用户名</TD>
 <TD width="39%" height=21 align="left">
   <input class=unnamed1 size=19 name=login_name ID="login_name"></TD>
 <TD width="18%" height=30>密码</TD>
 <TD width="39%" height=30 align="left">
 <input class=unnamed1 type=password size=19 name=password ID="password">
</form>

↑在<form>...</form>中”name=login_name”和”name=password”
在CSDN的登録頁、这个是可以看到的login_name和password是验证页的变量。 

#6


谢谢!
你的意思是不是我这样登录后,以后再用IdHTTP访问其它网页,就可以了。访问其它网页时要怎么操作??带着Cookie吗?

#7


好了。结贴。谢谢斑竹