все что связано с моей работой
Главная » Програмирование » Как отправить POST

Как отправить POST

Нужно было сделать вход на сайт, у которого авторизация реализована на php (сессии и все такое):

var data: TIdMultiPartFormDataStream;
  s:string;
begin  
  data := TIdMultiPartFormDataStream.Create;
  data.AddFormField('login', 'бла-бла-бла');
  data.AddFormField('pass', 'секрет');
  s := HTTP.Post('http://какой-то.сайт/auth.php',data);
  if pos('

Ошибка!

',s)>0 then begin FAuthSuccess:=false; FResult:=s; end else begin FAuthSuccess:=true; FResult:=s; end; data.Free; end;

HTTP:TidHTTP,

HTTP.Post — вторым параметром принимает данные формы ввиде «имя»=»значение», т.е. TStrings, но у TIdMultiPartFormDataStream есть удобный метод AddFormField

возвращается код страницы с ошибкой или, если все нормально, то «легитная» страница

если авторизация пройдена, то для этого экземпляра HTTP можно работать по всему сайту, не надо к объекту добавлять куки менагер и тд, все работает тока с одним HTTP, но отсюда засада что созданный объект надо держать созданным и Connected на протяжении всего времени как он нужен, иначе надо каждый раз авторизироваться.

чтоб не убрать HTTP 1/1 302 надо у HTTP свойство HandleRedirects установить в True, потому что после удачной авторизации скрипты обычно перенаправляют вас на другую страницу

еще у HTTP стоит AllowCookies:=true, не помню сам ставил или по умолчанию, но стоит, обратное не пробовал

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.