ICS中HttpCli1如何设置cookie属性的请教 (20分)

  • 主题发起人 主题发起人 ImageEn
  • 开始时间 开始时间
I

ImageEn

Unregistered / Unconfirmed
GUEST, unregistred user!
ICS中HttpCli1如何设置cookie属性的请教:
我用一名叫FPiette里面的httpcli控件,该控件有个cookie的属性,为string型,按照我的理解,它应该是个boolean类型才对,要么启用cookie,要么不启用cookie,而这个string型的cookie该怎么对它赋值呢?某些论坛需要cookie,而我就想用这个控件对这些论坛里的内容进行操作。
谢谢。
 
把该论坛生成的cookie文件的内容(是string型的)传到cookie属性里!

或者试试类似httpcli.cookie.laodfromfile('Cookie:xxx@www.delphibbs.com/');
 
你用过这个控件吗?httpcli1.cookie后面没有loadformfile这个方法啊。
我用下面的代码:
var dwresult:boolean;
lpszcookiedata:array[0..80]of char;
lpdwsize:dword;
begin
lpdwsize:=sizeof(lpszcookiedata);
dwresult:=internetgetcookie(pchar(URLEdit.text),nil,@lpszcookiedata,lpdwsize);
HttpCli1.cookie:=strpas(lpszcookiedata);showmessage(HttpCli1.cookie);
虽然可以正常运行,却得不到正常结果,郁闷极了
 
***,到他网站上看faq,其它几项都正常,偏偏cookie这项网页打不开!简直老天都欺负我啊
 
没人用ICS吗?
 
不得答案顶不休
 
不得答案顶不休
 
我的办法:(可以实现网站登录,并保持连接)

1.接收Cookie
procedure TChildFrm.HttpCli1Cookie(Sender: TObject; const Data: String;
var Accept: Boolean);
var
st: TStringList;
s: String;
i, n: Integer;
begin
st := TStringList.Create;
try
s := Data;
st.Text := StringReplace(s, '; ', #13#10, [rfReplaceAll]);
n := st.IndexOfName('expires');
if n >= 0 then st.Delete(n);
n := st.IndexOfName('path');
if n >= 0 then st.Delete(n);
for i := 0 to st.Count - 1 do
begin
s := st.Names;
Cookies.Values := st.Values;
end;
finally
st.Free;
end;
ListBox1.Items := Cookies;
end;

2.发送Cookie
procedure TChildFrm.HttpGet(Url, Cookie: String);
begin
HttpCli1.URL := Url;
HttpCli1.Cookie := Cookie;
RecvStream.Clear;
HttpCli1.RcvdStream := RecvStream;
HttpCli1.GetASync;
end;

procedure TChildFrm.HttpPost(Url, Cookie, Data: String; EncType: TEncType);
begin
HttpCli1.URL := Url;
HttpCli1.Cookie := Cookie;
SendStream.Clear;
SendStream.Write(Data[1], Length(Data));
SendStream.Position := 0;
HttpCli1.SendStream := SendStream;
RecvStream.Clear;
HttpCli1.RcvdStream := RecvStream;
if EncType = encUrlEncoded then
HttpCli1.ContentTypePost := 'application/x-www-form-urlencoded';
if EncType = encFormEncoded then
HttpCli1.ContentTypePost := 'multipart/form-data';
HttpCli1.PostASync;
end;

procedure TChildFrm.Button2Click(Sender: TObject);
var
Url: String;
cookie: String;
Data: String;
begin
msg := UrlEncode(Edit13.Text);
boardid := Edit14.Text;
msgid := Edit15.Text;
Url := EncData(Edit9.Text);
HttpCli1.Reference := EncData(Edit10.Text);
Cookie := StringReplace(Cookies.Text, #13#10, '; ', [rfReplaceAll]);
Data := EncData(Memo3.Text);
if CheckBox3.Checked then
HttpGet(Url, cookie)
else
HttpPost(Url,cookie,Data,encUrlEncoded);
end;

其中Cookies 为TStringList 类型
 
如果处理的再详细一点,还要考虑Cookie中的路径信息,
不过我是一股脑全发给服务器了,
对于一般的论坛都没有问题

我写的那个程序,本来是用来论坛灌水的,不过没有完成,
但是,可以用来登录,不停的回复同一个帖子,
或DFW中不停的将帖子提前
甚至,可以用来猜解论坛的用户名和密码(当然,需要好的字典才行的)
 
谢谢lich。
请问下面的Cookies.Values := st.Values;cookies怎么没看到定义?应该怎么定义?我的理解就是procedure TChildFrm.HttpCli1Cookie(Sender: TObject; const Data: String; var Accept: Boolean)中的Data变量,对吧?

1.接收Cookie
procedure TChildFrm.HttpCli1Cookie(Sender: TObject; const Data: String;
var Accept: Boolean);
var
st: TStringList;
s: String;
i, n: Integer;
begin
st := TStringList.Create;
try
s := Data;
st.Text := StringReplace(s, '; ', #13#10, [rfReplaceAll]);
n := st.IndexOfName('expires');
if n >= 0 then st.Delete(n);
n := st.IndexOfName('path');
if n >= 0 then st.Delete(n);
for i := 0 to st.Count - 1 do
begin
s := st.Names;
Cookies.Values := st.Values;
end;
finally
st.Free;
end;
ListBox1.Items := Cookies;
end;

 
哦,明白了,cookie是参数传过去的
 
不好意思,请问lich:
EncType: TEncType是什么类型?该在哪里申明?
谢谢。
 
如果方便的话,请给我一个完整的代码看看
非常感谢。
 
那个类型是自定义的,
表示提交表单的编码方法,
一般都是用'application/x-www-form-urlencoded'
上传文件师用 'multipart/form-data'
普通表单提交,也可以采用 'multipart/form-data'

程序已发送:
程序中所附的一个ini文件,用工具栏上的第二个按钮加载,
可以用来将此问题不断提前
 
我用你的程序自动回复了很多次,次次都提示成功,可为什么这贴子还是沉在底下啊?
 
我用你的程序自动回复了很多次,次次都提示成功,可为什么这贴子还是沉在底下啊?
 
我怎么一回复就成功呢,
其实在DFW里面,你不可能一直让你的帖子置顶的,
但是能让它一直出现在第一页

如果不信的话,我可以让你的这个帖子一直处在第一页,
但是这样做不好,对别人不公平,所以我也不愿意使用这种功能
 
这个乌人,在偶贴子开骂
这是回敬这个狗鸡蛋的
ImageEN,你妈去死,刷你妈的鸡钯这个乌人,在偶贴子开骂
这是回敬这个狗鸡蛋的
ImageEN,你妈去死,刷你妈的鸡钯这个乌人,在偶贴子开骂
这是回敬这个狗鸡蛋的
ImageEN,你妈去死,刷你妈的鸡钯这个乌人,在偶贴子开骂
这是回敬这个狗鸡蛋的
ImageEN,你妈去死,刷你妈的鸡钯这个乌人,在偶贴子开骂
这是回敬这个狗鸡蛋的
ImageEN,你妈去死,刷你妈的鸡钯
 
楼上的鸡巴朋友,谢谢你顶我的贴子,回头给你吃个鸡巴
 
多人接受答案了。
 
后退
顶部