|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  POST запрос на synapse Всем привет. Знаю вопрос уже мхом оброс и в инете тонны статей, но я походу туповат, ибо ничего не получилось, а изучить синапс хочется. Решил сделать что-то типа виджета на браузерную игру, который отображает статистику/инфу и т.п. о моём персе, обновляя через определённый промежуток времени. Это легко, спарсил и готово. Но я не могу авторизоваться( Ну вот где я тут ошибся? Код: unit Unit1;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, httpsend, Vcl.StdCtrls;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
  th=class(tthread)
    private
    public
    procedure execute; override;
  end;
var
  Form1: TForm1;
  thh:th;
  h:Thttpsend;
  g:tstringlist;
  send:tstringstream;
implementation
{$R *.dfm}
procedure th.Execute;
begin
h.UserAgent:='browser';
h.MimeType:='application/x-www-form-urlencoded';
h.Headers.Add('Referer: http://tiwar.ru/?sign_in=1');
send.WriteString('login=Testt&pass=123456');
h.Document.LoadFromStream(send);
h.HTTPMethod('POST','http://tiwar.ru/?sign_in=1');
g.LoadFromStream(h.Document);
form1.memo1.Lines.Add(utf8decode(h.Headers.Text));
form1.memo1.Lines.Add(inttostr(h.ResultCode));
form1.memo1.Lines.Add(utf8decode(g.Text));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
thh:=th.Create(true);
thh.FreeOnTerminate:=true;
thh.Priority:=tpnormal;
thh.Resume;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
send.Free;
g.Free;
h.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
h:=Thttpsend.Create;
g:=tstringlist.Create;
send:=tstringstream.Create;
end;
end.Ничего не пойму, запрос отправляется, по снифферу смотрел всё одинаково, так же как через браузер, но выдаёт что логин/пароль не верный. Хотя всё верно. На других играх тоже самое. Помогите разобраться пожалуйста | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   Код: procedure th.Execute;
begin
h.MimeType:='application/x-www-form-urlencoded';
 
send.WriteString('login=Testt&pass=123456');
h.Document.LoadFromStream(send);
h.HTTPMethod('POST','http://tiwar.ru/?sign_in=1');
g.LoadFromStream(h.Document);
 
form1.memo1.Lines.Add(utf8decode(h.Headers.Text));
form1.memo1.Lines.Add(inttostr(h.ResultCode));
form1.memo1.Lines.Add(utf8decode(g.Text));
end;Перед постом хедер чистить надо.а первый запрос на авторизацию без него слать. И без юзер агента. Вообщем попробуй Последний раз редактировалось Admin, 17.02.2016 в 19:28. | 
| Этот пользователь сказал Спасибо ApxaHGe1 за это полезное сообщение: | ||
|  
Loca (20.02.2016)
 | ||
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 ну вроде разобрался что к чему, немножко сложнее конечно чем на инди, но тоже норм. Больше с редиректами мучился. |