Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 12:54   #1
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию idHTTP, POST

Всем привет. Возникла проблемка, которую никак не могу решить. Надеюсь на вашу помощь, т.к. нет опыта.

Нужно через программу отправить личное сообщение.
Авторизацию прошёл, куки получил. Пытаюсь отправить ПОСТ запрос серверу..но, увы, ошибка.

Код отправки:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var param,page:TStringList;
    attachment,xfToken:TStringList;
    pageset:string;
begin
 try
Http.Request.Clear;
HTTP.HandleRedirects:=true;
param:=TStringList.Create;
page:=TStringList.Create;
attachment:=TStringList.Create;
xfToken:=TStringList.Create;

page.Text:=HTTP.Get('http://rus-minecraft.ru/conversations/add');
attachment.Add(Pars('<input type="hidden" name="attachment_hash" value="', page.Text,'" />'));
xfToken.Add(Pars('<input type="hidden" name="_xfToken" value="',page.Text,'" />'));

param.Add('recipients='+Edit4.Text);
param.Add('title='+Edit3.Text);
param.Add('message_html=<p>'+ Memo1.Text+'</p>');
param.Add('_xfRelativeResolver=http://rus-minecraft.ru/conversations/add');
param.Add('attachment_hash='+attachment.Text);
param.Add('_xfToken='+xfToken.Text);
param.Add('_xfRequestUri=/conversations/add');
param.Add('_xfNoRedirect=1');
param.Add('_xfToken='+xfToken.Text);
param.Add('_xfResponseType=json');


HTTP.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');
HTTP.Request.CustomHeaders.Add('X-Ajax-Referer: http://rus-minecraft.ru/conversations/add');
HTTP.Request.Accept:='application/json, text/javascript, */*; q=0.01';
HTTP.Request.Connection:='Keep-Alive';
HTTP.Request.Referer:='http://rus-minecraft.ru/conversations/add';
HTTP.Request.AcceptEncoding:='gzip, deflate';
HTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
HTTP.Request.Host:='rus-minecraft.ru';
HTTP.Request.UserAgent:='Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.11';



pageset:=HTTP.Post('http://rus-minecraft.ru/conversations/insert', param);
  finally
    Page.Free;
    attachment.Free;
    xfToken.Free;
    param.Free;
  end;
end;

Но, получаю ошибку на странице:

Цитата:
<div class=""errorOverlay"">
<a class=""close OverlayCloser""></a>

<h2 class=""heading"">Произошла ошибка:</h2>

<div class=""baseHtml"">

<label for=""ctrl_0"" class=""OverlayCloser"">Обнаружено нарушение безопасности. Пожалуйста, нажмите ""Назад"" в браузере, обновите страницу и попробуйте снова.</label>

</div>

</div>"
Что отправляет браузер серверу:



Что удаётся отправить мне(смущает Cookie2):



В чём моя ошибка?
Подскажите пожалуйста. Первый раз работаю с ПОСТ запросами.
Спасибо.

ЗЫ: Хэщ получаю с помощью парсинга

Последний раз редактировалось _ZixeL_; 09.01.2013 в 12:56.
_ZixeL_ вне форума Ответить с цитированием
Старый 09.01.2013, 13:18   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Скорее всего проблема в "Cookie2", далее попробуйте выставить протокол 1.1, а не 1.0, как у Вас. Далее, сообщение отправляется скорее всего незакодированное. В браузере Saimen, у Вас Saime

Последний раз редактировалось Lardes; 09.01.2013 в 13:21.
Lardes вне форума Ответить с цитированием
Старый 09.01.2013, 13:26   #3
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Скорее всего проблема в "Cookie2", далее попробуйте выставить протокол 1.1, а не 1.0, как у Вас. Далее, сообщение отправляется скорее всего незакодированное. В браузере Saimen, у Вас Saime
Никак не получается убрать Cookie2.
Ставил версию протокола, ProtocolVersion=pv1_1, Но всё ровно отправляло через 1.0 почему-то.

Можно подробнее про кодирование сообщения?
Цитата:
Сообщение от Lardes Посмотреть сообщение
В браузере Saimen, у Вас Saime
Это случайно. Пробовал разных, реальных зарегистрированных пользователей. Толку нет.

Последний раз редактировалось _ZixeL_; 09.01.2013 в 13:28.
_ZixeL_ вне форума Ответить с цитированием
Старый 09.01.2013, 13:31   #4
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Я не пойму почему большинство так цепляется за эти инди... Про кодирование: можно использовать UTF8Decode(String), также в библиотеке Synapse есть куча функций кодирования
Lardes вне форума Ответить с цитированием
Старый 09.01.2013, 13:34   #5
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Из стандартных функций нашел: http://www.programmersforum.ru/showp...12&postcount=8
Lardes вне форума Ответить с цитированием
Старый 09.01.2013, 13:44   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

а так ?
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  param:TStringList;
  page:string;
begin
  Http.Request.Clear;
  HTTP.HandleRedirects:=true;

  page:=HTTP.Get('http://rus-minecraft.ru/conversations/add');

  HTTP.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');
  HTTP.Request.CustomHeaders.Add('X-Ajax-Referer: http://rus-minecraft.ru/conversations/add');
  HTTP.Request.Accept:='application/json, text/javascript, */*; q=0.01';
  HTTP.Request.Referer:='http://rus-minecraft.ru/conversations/add';
  HTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
  HTTP.Request.UserAgent:='Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.11';

  param:=TStringList.Create;
  try
    param.Values['recipients']:=Edit4.Text;
    param.Values['title']:=Edit3.Text;
    param.Values['message_html']:='<p>'+ Memo1.Text+'</p>';
    param.Values['_xfRelativeResolver']:='http://rus-minecraft.ru/conversations/add';
    param.Values['attachment_hash']:=Pars('<input type="hidden" name="attachment_hash" value="', page,'" />');
    param.Values['_xfToken']:=Pars('<input type="hidden" name="_xfToken" value="',page,'" />');
    param.Values['_xfRequestUri']:='/conversations/add';
    param.Values['_xfNoRedirect']:='1';
    param.Values['_xfResponseType']:='json';

    page:=HTTP.Post('http://rus-minecraft.ru/conversations/insert', param);
  finally
    param.Free;
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 09.01.2013, 14:01   #7
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
а так ?

HTTP/1.1 403 Forbidden

Со второго раза отправило)))
Ура. Спасибо тебе еще раз)

Пока больше ошибок нет.

Последний раз редактировалось _ZixeL_; 09.01.2013 в 14:05.
_ZixeL_ вне форума Ответить с цитированием
Старый 12.03.2013, 16:19   #8
Don01
Новичок
Джуниор
 
Регистрация: 12.03.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от _ZixeL_ Посмотреть сообщение
Всем привет. Возникла проблемка, которую никак не могу решить. Надеюсь на вашу помощь, т.к. нет опыта.

Нужно через программу отправить личное сообщение.
Авторизацию прошёл, куки получил. Пытаюсь отправить ПОСТ запрос серверу..но, увы, ошибка.

Код отправки:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var param,page:TStringList;
    attachment,xfToken:TStringList;
    pageset:string;
begin
 try
Http.Request.Clear;
HTTP.HandleRedirects:=true;
param:=TStringList.Create;
page:=TStringList.Create;
attachment:=TStringList.Create;
xfToken:=TStringList.Create;

page.Text:=HTTP.Get('http://rus-minecraft.ru/conversations/add');
attachment.Add(Pars('<input type="hidden" name="attachment_hash" value="', page.Text,'" />'));
xfToken.Add(Pars('<input type="hidden" name="_xfToken" value="',page.Text,'" />'));

param.Add('recipients='+Edit4.Text);
param.Add('title='+Edit3.Text);
param.Add('message_html=<p>'+ Memo1.Text+'</p>');
param.Add('_xfRelativeResolver=http://rus-minecraft.ru/conversations/add');
param.Add('attachment_hash='+attachment.Text);
param.Add('_xfToken='+xfToken.Text);
param.Add('_xfRequestUri=/conversations/add');
param.Add('_xfNoRedirect=1');
param.Add('_xfToken='+xfToken.Text);
param.Add('_xfResponseType=json');


HTTP.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');
HTTP.Request.CustomHeaders.Add('X-Ajax-Referer: http://rus-minecraft.ru/conversations/add');
HTTP.Request.Accept:='application/json, text/javascript, */*; q=0.01';
HTTP.Request.Connection:='Keep-Alive';
HTTP.Request.Referer:='http://rus-minecraft.ru/conversations/add';
HTTP.Request.AcceptEncoding:='gzip, deflate';
HTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
HTTP.Request.Host:='rus-minecraft.ru';
HTTP.Request.UserAgent:='Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.11';



pageset:=HTTP.Post('http://rus-minecraft.ru/conversations/insert', param);
  finally
    Page.Free;
    attachment.Free;
    xfToken.Free;
    param.Free;
  end;
end;

Но, получаю ошибку на странице:



Что отправляет браузер серверу:



Что удаётся отправить мне(смущает Cookie2):



В чём моя ошибка?
Подскажите пожалуйста. Первый раз работаю с ПОСТ запросами.
Спасибо.

ЗЫ: Хэщ получаю с помощью парсинга
Привет я понял ты хочешь ламануть rus-minecraft я тоже ненавижу их! ! ! меня забанели не за что. друг посоветовал LOIS я их ддошу. давай я тебе скину LOIS и вместе будем. или скинь мне как нада правильно ломать их сервер будем вместе ломать.
Don01 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdHTTP post запрос darkblood0202 C++ Builder 6 02.05.2012 23:52
idhttp post roulis2844sasha Работа с сетью в Delphi 2 26.07.2011 10:15
Цикл, и idhttp post F1shka Работа с сетью в Delphi 0 05.01.2011 01:37
idHTTP post nix01d Работа с сетью в Delphi 7 06.07.2010 23:52
POST idHTTP Pasha_Sh Работа с сетью в Delphi 7 11.06.2010 09:00