Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
1

Помогите отправить запрос через HTTPSend

02.04.2012, 21:52. Просмотров 4020. Ответов 21
Метки нет (Все метки)

Делаю так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  http: THTTPSend;
  d: TStringStream;
  begin
 http:= THTTPSend.Create;
 HTTP:=THTTPSend.Create;
HTTP.KeepAlive:=true;
HTTP.KeepAliveTimeout:=300;
HTTP.TargetHost:='sendsms.megafon.ru';
HTTP.TargetPort:='80';
HTTP.Protocol:='1.1';
HTTP.MimeType:='application/x-www-form-urlencoded';
 with http do
  begin
    D:=TStringStream.Create('');
    D.WriteString('prefix='+Combobox1.Text);
    D.WriteString('addr='+Edit3.Text);
    D.WriteString('message='+Memo2.Text);
    D.WriteString('recaptcha_response_field='+Edit2.Text);
    D.WriteString('submit=go');
    Http.Document.LoadFromStream(D);
     if httpMethod('POST', 'https://sendsms.megafon.ru/') then
      Memo2.Lines.LoadFromStream(http.Document);
  end;
   http.Free;
   d.Free;
end;
Но ничего не выходит, помогите отправить запрос правильно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 21:52
Ответы с готовыми решениями:

Помогите отправить Post запрос
Всем привет, расскажите пожалйста как отправить POST запросы на сервер, все...

Отправить запрос через синапс
Ниже есть скрины Мне нужно Подчеркнул что нужно сделать. точнее как можно...

Как получить код страницы?) Через httpsend
Я отправляю такой запрос: httpsend:=THTTPSend.Create; ...

Отправить запрос через Soks прокси
Всем привет. уже 3 дня не могу решить проблему... Работаю с IP_Works...

Как отправить POST-запрос через функцию?
Здравствуйте,подскажите как можно отправить POST запрос через функцию. ...

21
smw1975
54 / 54 / 4
Регистрация: 15.12.2010
Сообщений: 258
06.04.2012, 17:28 2
эээ, и чем смотрели, что имено отправлять надо???
Код
charcheck
lang
prefix
addr
message
send_day
send_month
send_hour
send_minute
send_year
recaptcha_challenge_field
recaptcha_response_field
список полей на вскидку, что должно уходить
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 20:48  [ТС] 3
Цитата Сообщение от smw1975 Посмотреть сообщение
эээ, и чем смотрели, что имено отправлять надо???
Код
charcheck
lang
prefix
addr
message
send_day
send_month
send_hour
send_minute
send_year
recaptcha_challenge_field
recaptcha_response_field
список полей на вскидку, что должно уходить
т.е. все эти поля я должен заполнять и отправлять на сервер?

Добавлено через 5 часов 20 минут
Вот, заполнил все поля. Но смс все равно не приходит. Где ошибка?
Помогите пожалуйста?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.SpeedButton2Click(Sender: TObject);
var Data:TStringList; s:string;
postdata:TStringList;
    uri: TIdUri;
        temp:string;
  begin
  postdata:=TSTringList.Create;
IdHTTP1.AllowCookies:=true;
//Разрешаем автоматический редирект
IdHTTP1.HandleRedirects:=True;
  postdata.Add('codekey');
postdata.Add('charcheck=йцукен');
postdata.Add('lang');
postdata.Add('prefix='+ComboBox1.text);
postdata.Add('addr'+Edit3.Text);
postdata.Add('message'+Memo2.Text);
postdata.Add('transliterate=true');
postdata.Add('recaptcha_response_field'+edit2.Text);
postdata.Add('send_day='+ ComboBox2.Text);
postdata.Add('send_month='+ ComboBox3.Text);
postdata.Add('send_hour='+ ComboBox5.Text);
postdata.Add('send_minute=' + ComboBox4.Text);
postdata.Add('send_year=' + '12');
postdata.Add('recaptcha_challenge_field');
postdata.Add('go=Отправить');
idhttp1.HandleRedirects:=True;
idhttp1.Post('https://sendsms.megafon.ru',PostData);
  end;
0
smw1975
54 / 54 / 4
Регистрация: 15.12.2010
Сообщений: 258
08.04.2012, 21:14 4
Цитата Сообщение от Wowka97 Посмотреть сообщение
postdata.Add('recaptcha_challenge_field');
после этой строки я должен долго смеяться???
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 21:19  [ТС] 5
А что там нужно?
Я первый раз с idhttp работаю.
0
БогДелфей
423 / 331 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
08.04.2012, 21:31 6
да всего лишь распознать капчу
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 21:33  [ТС] 7
Цитата Сообщение от БогДелфей Посмотреть сообщение
да всего лишь распознать капчу
Капча выводится без проблем.
Вот:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function GetUrl(Value: String): String;
var
  I: Integer;
begin
  I:= Pos('//www.google.com/recaptcha/api/', Value);
  Delete(Value, 1, I-1);
  I:= Pos('"', Value);
  Result:= Copy(Value, 1, I-1);
end;
 
function GetUrlEx(SubStr, Value: String): String;
var
  I: Integer;
begin
  I:= Pos(SubStr, Value);
  Delete(Value, 1, I);
  I:= Pos('''', Value);
  Delete(Value, 1, I);
  I:= Pos('''', Value);
  Result:= Copy(Value, 1, I-1);
end;
procedure TForm2.Timer1Timer(Sender: TObject);
var
  http: THTTPSend;
  jpeg: TJpegimage;
  Url: String;
  Server: String;
  Challenge: String;
begin
Form1.ComboBox1.Text:='+7 927';
Form1.Memo1.Lines.Clear;
  http:= THTTPSend.Create;
  http.HTTPMethod('GET','https://sendsms.megafon.ru/');
  Form1.Memo1.Lines.LoadFromStream(http.Document);
  Url:= 'https:'+GetUrl(Form1.Memo1.Text);
  Form1.Edit1.Text:= Url;
 
  http.Clear;
  http.HTTPMethod('GET', Url);
  Form1.Memo1.Lines.LoadFromStream(http.Document);
 
  Server:= GetUrlEx('server', Form1.Memo1.Text);
  Challenge:= GetUrlEx('challenge', Form1.Memo1.Text);
  Form1.Memo1.Lines.Add(Server);
  Form1.Memo1.Lines.Add(Challenge);
 
  http.Clear;
  http.HTTPMethod('GET', Server+'image?c='+Challenge);
  jpeg:= TJpegimage.Create;
  jpeg.LoadFromStream(http.Document);
  Form1.Image1.Picture.Assign(jpeg);
 
  jpeg.Free;
  http.Free;
  Form2.Timer1.Enabled:=false;
  end;
0
БогДелфей
423 / 331 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
08.04.2012, 21:36 8
прекрасно
Delphi
1
postdata.Add('recaptcha_challenge_field=???');
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 21:38  [ТС] 9
Цитата Сообщение от БогДелфей Посмотреть сообщение
прекрасно
Delphi
1
postdata.Add('recaptcha_challenge_field=???');
Ну а за место ??? что??
0
БогДелфей
423 / 331 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
08.04.2012, 21:41 10
понятия не имею, но что-то явно должно быть, ведь зачем то этот параметр передаётся
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 21:43  [ТС] 11
Спасибо, я туда все что можно и нельзя подставлял.
Ничего не выходит
0
БогДелфей
423 / 331 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
08.04.2012, 21:50 12
и капчу подставлял?
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
08.04.2012, 21:55  [ТС] 13
Цитата Сообщение от БогДелфей Посмотреть сообщение
и капчу подставлял?
Как понять подставлял?
Я заполняю все поля, ввожу капчу в Edit но ничего не происходит.
Видимо и правда дело в строке
Delphi
1
postdata.Add('recaptcha_challenge_field=???');
0
smw1975
54 / 54 / 4
Регистрация: 15.12.2010
Сообщений: 258
09.04.2012, 09:44 14
Так, теперь уже без шуток. Алгоритм действий:
поставить снифер. Лучше программу, но на крайний случай плагин к браузеру. И посмотреть, наконец, что должно быть в поле recaptcha_challenge_field. Небольшая подсказка - так ID каптчи передается. По Вашему как сервак должен проверять введенную каптчу?
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
09.04.2012, 15:23  [ТС] 15
Буду пробовать. Плагин установил, который отлавливает все передачи на сервер.
Но не совсем разобрался с ним, что и как..

Добавлено через 1 час 29 минут
Delphi
1
2
Url:= 'https:'+GetUrl(Form1.Memo1.Text);
  Form1.Edit1.Text:= Url;
Вот в этой строке, как я понял собирается полный адрес к капче.
Делаю так:
Delphi
1
postdata.Add('recaptcha_challenge_field=' + Edit1.text);
Ничего не получается. Или я не правильно понял?
0
smw1975
54 / 54 / 4
Регистрация: 15.12.2010
Сообщений: 258
09.04.2012, 15:37 16
ты поймал ссылку вида
Код
https://www.google.com/recaptcha/api/image?c=03AHJ_Vut8b_Ga9f4qf2i3BA4sSMgeq8y0acgAYlXkHjRFuUqBw4xv-BL04soHz9ekxvkbQImZWL_GcmGu6oWoLT7U0If98ZP_-ym43XGxTKHYqj8HJ6T_6oW-R-UiGDoX64gzJB-ARwZ8ZhTHKjXlzn9iv1sBPYhWmfdVmEUmEHfMggZQrZjaGJ4
то что после "?с=" и есть этот параметр
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
09.04.2012, 15:42  [ТС] 17
Цитата Сообщение от smw1975 Посмотреть сообщение
ты поймал ссылку вида
Код
https://www.google.com/recaptcha/api/image?c=03AHJ_Vut8b_Ga9f4qf2i3BA4sSMgeq8y0acgAYlXkHjRFuUqBw4xv-BL04soHz9ekxvkbQImZWL_GcmGu6oWoLT7U0If98ZP_-ym43XGxTKHYqj8HJ6T_6oW-R-UiGDoX64gzJB-ARwZ8ZhTHKjXlzn9iv1sBPYhWmfdVmEUmEHfMggZQrZjaGJ4
то что после "?с=" и есть этот параметр
Вот у меня есть еще такая строчка.
Может она ключевая?
Delphi
1
http.HTTPMethod('GET', Server+'image?c='+Challenge);
Здесь параметр и присваивается наверное.
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
09.04.2012, 16:11  [ТС] 18
Решил добавить скрин.
Снизу в Edit1.text присваивается параметр.
Его и нужно использовать?
0
Миниатюры
Помогите отправить запрос через HTTPSend  
smw1975
54 / 54 / 4
Регистрация: 15.12.2010
Сообщений: 258
09.04.2012, 16:11 19
да, насколько я помню
0
Wowka97
0 / 0 / 1
Регистрация: 03.06.2011
Сообщений: 42
09.04.2012, 16:20  [ТС] 20
Цитата Сообщение от smw1975 Посмотреть сообщение
да, насколько я помню
Сейчас попробую.
Наверное должно быть так:
postdata.Add('recaptcha_challenge_field=' + Edit1.text);

Добавлено через 7 минут
Ничего не происходит(
Смс сообщение не приходит.
Можешь пожалуйста посмотреть исходник и поставить комментарии где есть ошибки?
0
09.04.2012, 16:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 16:20

Как отправить такой post запрос через синапс?
Фото ниже. Можно и через инди, но лучше синапс. Именно такой надо. Все данные...

Synapse, HTTPSEND не догружает страницы
Есть программа которая по очереди загружает страницы get запросом. При проверке...

как отправить запрос на сервер
Что необходимо сделать на форме, что бы по нажатию на Button1 отправить на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru