Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.126.11] |
|
Сообщ.
#1
,
|
|
|
Как можно реализовать посылку Cookies на сервер? при помощи ClientSocket.
|
Сообщ.
#2
,
|
|
|
Нет ничего проще, добавляешь в header секцию Cookies в которую пишешь твои кукисы и отправляешь...
|
Сообщ.
#3
,
|
|
|
я пишу так
var c: Char; MySocket: TWinSocketStream; logined: string; i:integer; Socket: TCustomWinSocket; begin MySocket := TWinSocketStream.Create(Socket, 60000); edit3.Text:='No'; ClientSocket1.Host:=edit1.Text; ClientSocket1.port:=SpinEdit1.Value; ClientSocket1.Active:=true; ClientSocket1.Open; for i:=0 to 15 do begin logined:=memo1.Lines[i]+#13; mySocket.Write(logined, Length(memo1.Lines.text)); end; while not MySocket.WaitForData(100) do Application.ProcessMessages; if MySocket.Read(c, 1)=1 then edit3.Text:='Yes'; MySocket.Free; end; end. в memo находится такой запрос POST /login.php HTTP/1.1 Host: www.уу.ru User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us Accept-Charset: windows-1251,utf-8,iso-8859-1;q=0.3,*;q=0.1 Keep-Alive: 300 Referer: http://уу/login.php Cookie: phpbb2mysql_data=a%3A0%3A%7B%7D; phpbb2mysql_sid=cff8b0b526a221553bc23ee57a8daee4 Content-Type: application/x-www-form-urlencoded Content-Length: 54 Connection: keep-alive Accept-Encoding: gzip,deflate TE: gzip,deflate и у меня выскакивает вот такая ошибка socket must be in blocking mode Что это может значить и правельно ли я пишу? |
Сообщ.
#4
,
|
|
|
Цитата 0n!k @ ClientSocket1.Host:=edit1.Text; ClientSocket1.port:=SpinEdit1.Value; ClientSocket1.Active:=true; ClientSocket1.Open; Где ты это пишешь? Судя по всему в обработчике OnConnect ClientSocket1. Если да, то у тебя уже есть соединение а ты пытаешься установить его снова. И еще ClientSocket1.Active:=true и ClientSocket1.Open одно и тоже. Цитата 0n!k @ и у меня выскакивает вот такая ошибка socket must be in blocking mode Судя по всему ClientSocket1.ClientType у тебя ctNonBlocking. Не проще в обработчике OnConnect сделать Socket.SendText(Memo1.text+#13#10#13#10); а в обработчике OnRead - Tmp:=Tmp+Socket.ReceiveText; где Tmp - глобальная переменная. Ну и в OnDisconnect обрабатывать Tmp. |
Сообщ.
#5
,
|
|
|
Сообщ.
#6
,
|
|
|
попробуй так
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ScktComp, StdCtrls, Spin; type TForm1 = class(TForm) ClientSocket1: TClientSocket; Button2: TButton; Memo1: TMemo; Edit1: TEdit; Edit3: TEdit; SpinEdit1: TSpinEdit; procedure Button2Click(Sender: TObject); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Tmp:string; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin edit3.Text:='No'; ClientSocket1.Host:=edit1.Text; ClientSocket1.port:=SpinEdit1.Value; ClientSocket1.Open; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Socket.SendText(memo1.Lines.text+#13#10); end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin Tmp:=Tmp+Socket.ReceiveText; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin ShowMessage(Tmp); end; end. |