我用idhttp来传递数据给某个网页是不是相当于这个网页被执行了一次,关于cookies(38分)

  • 主题发起人 主题发起人 lyzyh1209
  • 开始时间 开始时间
L

lyzyh1209

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个客户端程序,用idhttp来验证用户合法性,有一点我搞不太明白,idhttp传递给某个页面,然后某个页面返回个值,是不是相当于在网页浏览器中把这个页面浏览了一次。
我在idhttp传递值给某个页面时,我希望她能够建立个cookies,网页中添加了相应的语句,在网页中直接输入地址比如http://www.abc.com/name=张三&pass=123&cookiedate=10,然后执行,它会自动建立个cookies,但是我用idhttp传递数值到这个页面,成功之后也不建立cookies
我想问下这个cookies改怎么创建,还有在客户端怎么读取cookies。
 
cookie 的原理:
访问改网页,该站点会回亏给你的机器COOKIE;
访问某个站点,IE发出:
GET /page/show_vote.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-icq, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-chs
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)
Host: xxx.xxx.com.cn
Connection: Keep-Alive

站点返回:200 OK
HTTP/1.1 200 OK
Date: Sun, 17 Sep 2006 14:38:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 10312
Content-Type: text/html
Set-Cookie: ASPSESSIONIDCQRCBDTQ=CCOLKJKCMPOHEFPJFBICPMJK; path=/
Cache-control: private

看到该页面给你的:Set-Cookie:项目了吗.,这个就是你的IE以后COOKIE咯!

给分来!给分来!给分来!给分来!给分来!给分来!
 
idhttp 的COOKIE设置在:
idhttp1.Request.SetHeaders;
idHttp1.Request.CustomHeaders.Text := 'Cookie: '+memo1.Text ;

memo1.text,为你访问该站点的COOKIE,反正我做了两个投票器,就是这么使用的!
部分代码www.xnzy.net有一点点!我放的不全,自己去做吧!
下载地址:WWW.XNZY.NET/定做第5版.rar

给分来!给分来!给分来!给分来!给分来!给分来!给分来!
 
还没彻底搞明白有点问题,搞明白了会加分结贴,谢谢
有人回了这样段代码,你们看看帮忙分析一下。
取得Cookie后再用它得到你的网页内容,程序大至下:
var
Cookie,CookieList:string;
i:integer;
....
//先登录
Cookie:='';
CookieList:='';
for i:=0 to idhttp1.Response.ExtraHeaders.Count-1 do
if (UpperCase(copy(IdHTTP1.Response.ExtraHeaders.Strings,1,10)) ='SET-COOKIE') then
begin
Cookie :=Trim(copy(IdHTTP1.Response.ExtraHeaders.Strings,12,1000));
Cookie :=copy(Cookie,1,Pos(Cookie,';'));
CookieList:=CookieList+Cookie;
end;
IdHTTP1.Request.ExtraHeaders.Add("Cookie: "+CookieList);
//再用IdHTTP1.Get新的网页

加粗的部分,就这句for i:=0 to idhttp1.Response.ExtraHeaders.Count-1 do的时候
提示,ExtraHeaders没有定义,我用的是d7
还有个问题,这个地方新网页指的是哪个页面。这里边用到两个页面,一个是登陆页面,那新页面只得是那个,谢谢,
要是谁能帮我把每行注视一下,加80分,这是我现在能有的最多的分数了,谢谢啊
 
你的 IdHTTP1保存了一系列的COOKIE列表,将各个COOKIE增加到列表!
COOKIE与SESSION 有点....请找: 浅谈HTTP中的Session与Cookie
这个东西你必须看,看了应该通了!
为什么用这个 IdHTTP1.Request.ExtraHeaders.Add("Cookie: "+CookieList);
D7自带的indy组件明显不支持该语句,前帖不是写了吗?D7自带INDY组件也可用这个来写:
idhttp1.Request.RawHeaders.Values['Cookie'] :=memo2.Text;
COOKIE提取:
我的方法: MEMO2.Text := replacesub(data,'; path=/','');
由于是做投票器,就用了我的处理方法:
function TMAIN.replacesub(str,sub1,sub2:string):string;
var
apos:integer;
rslt:string;
begin
apos:=pos(sub1,str);
rslt:='';
while (apos<>0) do
begin
rslt:=rslt+copy(str,1,apos-1)+sub2;
delete(str,1,apos+length(sub1));
apos:=pos(sub1,str);
end;
result:=rslt+str;
end;

另外的处理是这样的:
s :=data;
if copy(s,1,5)<>'Visit' then
begin
memo2.Text:=copy(s,1,pos(';',s)-1);
end
else
begin
memo3.Text:=data;
end;

不回答了,结帖算了!这样的问题反正是搞鬼的东西,给不给分无所谓了!
 
自己对自己回答的问题:顶一下,结束!
 
现看一下啊
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部