Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка POST запроса 
:(
    Опции темы
Zedich
Дата 7.5.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.3.2008

Репутация: нет
Всего: нет



Никак не могу разобраться с отправкой данных, пересмотрел форум на примерах состряпал код, но работать отказывается
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdAuthentication,
  IdTCPClient, IdHTTP,     IdMultipartFormData, ExtCtrls, OleCtrls, SHDocVw,
  XPMan, Buttons, Spin, IdCookieManager;

  type
  TMyThread = class(TThread)    // поток из которого будем вызывать POST запрос
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public
    URL: String;
    email: String;
    Password: String;
  end;


type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    GroupBox1: TGroupBox;
    Button1: TButton;
    Edit1: TEdit;
    Memo2: TMemo;
    GroupBox2: TGroupBox;
    WB: TWebBrowser;
    IdCookieManager1: TIdCookieManager;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WB.Navigate(Form1.Edit1.Text);
end;


procedure TMyThread.Execute;
var
Source: String;
Params: TStringList;
begin
  Params := TStringList.Create;
  Params.Add('email='+email);
  Params.Add('pass='+Password);
  try
    Form1.IdHTTP1.HandleRedirects:= True;
    Form1.IdHTTP1.ProxyParams.ProxyUsername:='';
    Form1.IdHTTP1.ProxyParams.ProxyPassword:='';
    Form1.IdHTTP1.ProxyParams.ProxyServer:='192.168.6.100';
    Form1.IdHTTP1.ProxyParams.ProxyPort:=3128;
    Form1.Memo2.text:=Form1.IdHTTP1.Post(URL,Params);
    Form1.WB.Navigate('http://s1.decline.ru/play/?act=profile');
  finally
    Params.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  url, email, password: string;
  MyThread : TMyThread;
begin
email := '[email protected]';
Password := 'yenimite';
URL := 'http://s1.decline.ru/users/?act=login';
MyThread := TMyThread.Create(True);
MyThread.URL := URL;
MyThread.email := email;
MyThread.Password := Password;
MyThread.Resume;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  Flags, TargetFrameName, PostData, Headers: OleVariant;
  Str : String;
begin
Str:='[email protected]&pass=yenimite';
//--------
PostData := VarArrayCreate([1, Length(Str) + 1], varByte);
System.Move(Str[1], VarArrayLock(PostData)^, Length(Str) + 1);
VarArrayUnlock(PostData);
Headers := 'Content-Type:application/x-www-form-urlencoded';
//--------
WB.Navigate('http://s1.decline.ru/users/?act=login', Flags, TargetFrameName, PostData, Headers);
end;

end.


В первом варианте 302 ошибку выдает, а во втором такое чувство что либо с кодировкой либо с хидером проблемы :(
Помогите пожалуйста разобраться...
PM MAIL   Вверх
Демо
Дата 7.5.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(Zedich @  7.5.2009,  14:14 Найти цитируемый пост)
Помогите пожалуйста разобраться... 


А что не получается? Как проявляется "неправильность" работы?


--------------------
    
PM MAIL ICQ Skype   Вверх
Zedich
Дата 7.5.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.3.2008

Репутация: нет
Всего: нет



При отправке через idhttp выдает:
Цитата

 <br />
<b>Fatal error</b>:  Call to a member function set() on a non-object in <b>/storage/home/srv16061/decline/s1/index.php</b> on line <b>12</b><br />

при отправке через webbrowser.navigate сервер возвращает ответ, что неверный логин/пароль

PM MAIL   Вверх
TruePozer
Дата 9.5.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



Аналогичная проблема, захотелось написать клиент который бы отправлял смс с сайта _http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdHttp, jpeg, GIFImage;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHttp;
  ms:   TMemoryStream;
  gif: TGifImage;
begin
  http := TIdHTTP.Create(nil);
  ms := TMemoryStream.Create;
  gif := TGifImage.Create;
   try
    http.Get('http://www.beonline.ru/servlet/send/confirm_code/mUTACQhACa.gif', ms);
    ms.Position := 0;
    gif.LoadFromStream(ms);
    Image1.Picture.Graphic := gif;
  finally
    gif.Free; ms.Free; http.Free;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
Var
  http: TIdHttp;
  x:tstringlist;
begin

  http.Request.Host:=('www.beonline.ru');
  http.Request.UserAgent:=('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10');
  http.Request.Accept:=('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
  http.Request.AcceptLanguage:=('en-us,en;q=0.5');
  http.Request.AcceptEncoding:=('gzip,deflate');
  http.Request.AcceptCharset:=('ISO-8859-1,utf-8;q=0.7,*;q=0.7');
  http.Request.Connection:=('keep-alive');
  http.Request.Referer:=('http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms');
  http.Get('http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms');

  x:=tstringlist.create;
  x.Add('deferto=');
  x.Add('adv_year=');
  x.Add(' send=send');
  x.Add('confirm_key=D0WKpWUzq9');
  x.Add('confirm_code='+ Edit1.Text);
  x.Add('destination_number_from=ordinary');
  x.Add('phone=9620312963');
  x.Add('translit=1');
  x.Add('message=QWERTY');
  x.Add('mlength=60');

  http.Post('http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms',x);
end;

end.


По Button1Click получаем капчу, это работает, пишим капчу в Edit1
По Button2Click всё это дело отправляем.

Помогите, что не так в запросе?
PM MAIL   Вверх
Демо
Дата 9.5.2009, 16:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(Zedich @  7.5.2009,  16:02 Найти цитируемый пост)
при отправке через webbrowser.navigate сервер возвращает ответ, что неверный логин/пароль


TWebBrowser всего лишь надстройка над IE, следовательно, пароль или имя пользователя неверны.


--------------------
    
PM MAIL ICQ Skype   Вверх
MetalFan
Дата 10.5.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(Zedich @  7.5.2009,  14:14 Найти цитируемый пост)
Никак не могу разобраться с отправкой данных, пересмотрел форум на примерах состряпал код, но работать отказывается

плохо смотрел и читал. по рукам бы за такое! из потока лезешь к компонентам на форме.

Цитата(TruePozer @  9.5.2009,  16:43 Найти цитируемый пост)
Аналогичная проблема

ни разу не аналогичная.
1. получать Confirm Code каждый раз новый со страницы отправки.
2. использовать компонент на форме(AllowCookies=true), а не динамически созданный. или создавать его один раз с выставлением св-ва.
3. смотреть любым http дебаггером (рекомендую Fiddler2), что шлет браузер и сравнить с тем, что шлет программа


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1017 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.