Cookie是网站存在用户本地的一些变量,用于保存一些数据以识别用户的身份或者记录用户偏好设置等。
使用smartsniff等网络截包工具查看,当执行请求时实际上是在http请求数据里加入了cookie: key1=value1; key2=value2 …这样的值,返回数据时是类似set-cookie: key1=value1这样的值。
因为我们完全可以在用TIdHttp执行网络请求的时候模拟自己的cookie值并发送到服务器端。
这里要先说明一些TIdhttp的一个属性,AllowCookies,当此值为False时允许用户发送自定义的cookie,当此值为True时,不允许用户发送自定义的cookie。
下面是一段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
uses StrUtils; procedure TForm1.Button1Click(Sender: TObject); var J: Integer; HtmlStr: string; begin // 此循环用于删除原来有的cookie值 for J := IdHTTP1.Request.CustomHeaders.Count - 1 downto 0 do begin if StartsText('cookie:', IdHTTP1.Request.CustomHeaders[J]) then IdHTTP1.Request.CustomHeaders.Delete(J); end; IdHTTP1.Request.CustomHeaders.Add('Cookie: username=bcoder' ) ; // 另还可用下面的方法实现,没实验过 //IdHTTP1.Request.CustomHeaders.Values['cookie'] := 'username=bcoder'; HtmlStr := IdHTTP1.Get('http://svn1.bcoder.com'); end; |