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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2012, 20:27   #1
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию Не задает вопрос на спрашивай

Код:
 function FindID(strB,strE,str:string):string;
var
  b,e:integer;
begin
  b:=pos(strb,str)+Length(strb);
  e:=pos(strE,str);
  if (b=0)or(e=0) then
    Result:=''
  else
    Result:=copy(str,b,e-b);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Data:TStringList;
  Request:String;
  id1,id2:string;
begin
  Data:=TStringList.Create;
  Request:=idHTTP1.Get('http://sprashivai.ru/questions');
  id1:=FindID('<button id="askform-button" class="button-yellow-small" style="width: 134px;" onclick="ask(''questions'', ''',''');">'
+AnsiToUtf8('Спросить')+'</button>',Request);
  id2:=FindID('<div id="textarea-ios-fix"></div><input type="hidden" name="asking_hash" value="','" id="asking_hash" />',Request);
   Data.Add(id1+'='+id2);
   data.Add('username'+'='+'konstantin_delphi');
   data.Add('question'+'='+'texxt');
   data.Add('anonimous'+'='+'undefined') ;
   data.Add('capctha'+'='+'')  ;
   idhttp1.Post('http://sprashivai.ru/questions/ask',Data);
end;
end.
Что не так? Кто подскажет?

Последний раз редактировалось Stilet; 15.09.2012 в 21:05.
scroyler вне форума Ответить с цитированием
Старый 16.09.2012, 09:33   #2
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Data:TStringList;
  Request:String;
  id1,id2,str:string;
  n:integer;
begin
  Data:=TStringList.Create;

str:=idhttp1.Get('http://postingroom.ru/forum/42-0-0-1-1');
n:=pos('"ssid" value="',str)+length('"ssid" value="');
id1:= copy(str,n,posex('" />',str,n)-n);

n:=pos('<button id="askform-button" class="button-yellow-small" style="width: 134px;" onclick="Responses.ask('+'konstantin_delphi'+',',str)+length('<button id="askform-button" class="button-yellow-small" style="width: 134px;" onclick="Responses.ask('+'konstantin_delphi'+',');
id1:= copy(str,n,posex(''+''');">Спросить</button>',str,n)-n);

n:=pos('<div id="textarea-ios-fix"></div><input type="hidden" name="asking_hash" value="',str)+length('<div id="textarea-ios-fix"></div><input type="hidden" name="asking_hash" value="');
id2:= copy(str,n,posex('" id="asking_hash" />',str,n)-n);

   data.Add('username=konstantin_delphi');
   data.Add('question=texxt');
   Data.Add(id1+'='+id2);
   data.Add('anonimous'+'='+'undefined') ;
   data.Add('capctha'+'='+'')  ;
   idhttp1.Post('http://sprashivai.ru/questions/ask',Data);
end;
end.
делаю так,все равно не работает
Подскажите пож.,мне срочно надо!
scroyler вне форума Ответить с цитированием
Старый 16.09.2012, 13:37   #3
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Проверьте сниффером отправляются ли куки и попробуйте в запрос добавить Referer.
kangreon вне форума Ответить с цитированием
Старый 16.09.2012, 14:51   #4
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Проверьте сниффером отправляются ли куки и попробуйте в запрос добавить Referer.
вроде нет

Добавил Referer, не помогло, посмотри плз, может я , что то не правильно составляю
scroyler вне форума Ответить с цитированием
Старый 16.09.2012, 18:05   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,356
По умолчанию

Код:
Uses StrUtils, HTTPApp;
...
const
  userName = 'konstantin_delphi';
...
procedure TForm1.Button1Click(Sender: TObject);
var
  Data: TStringList;
  str, s1, s2: string;
  k: integer;
begin
  Data := TStringList.Create;
  str := IdHTTP1.Get('http://sprashivai.ru/' + userName);
  IdHTTP1.Request.Referer := 'http://sprashivai.ru/' + userName;
  s1 := 'Responses.ask(' + chr(39) + userName + chr(39) + ', ' + chr(39);
  k := pos(s1, str);
  if k > 0 then
    s1 := copy(str, k + length(s1), posex(chr(39) + ');', str,
        k) - k - length(s1))
  else
    s1 := '';
  s2 := 'name="asking_hash" value="';
  k := pos(s2, str);
  if k > 0 then
    s2 := copy(str, k + length(s2), posex('" id="', str, k) - k - length(s2))
  else
    s2 := '';
  Data.Add('username=' + userName);
  Data.Add('question=' + stringreplace(httpencode(
        'тестовый вопрос для проверки delphi программы)'), '+', '%2B',
      [rfReplaceAll]));
  Data.Add(s1 + '=' + s2);
  Data.Add('anonimous' + '=' + 'undefined');
  Data.Add('capctha' + '=' + '');
  str := IdHTTP1.Post('http://sprashivai.ru/questions/ask', Data);
  Data.free;
end;
Остается обработать полученный ответ в str.
Желательно, чтобы str = '{"status":"ok"}', но могут быть различные ошибки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.09.2012, 18:50   #6
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
Uses StrUtils, HTTPApp;
...
const
  userName = 'konstantin_delphi';
...
procedure TForm1.Button1Click(Sender: TObject);
var
  Data: TStringList;
  str, s1, s2: string;
  k: integer;
begin
  Data := TStringList.Create;
  str := IdHTTP1.Get('http://sprashivai.ru/' + userName);
  IdHTTP1.Request.Referer := 'http://sprashivai.ru/' + userName;
  s1 := 'Responses.ask(' + chr(39) + userName + chr(39) + ', ' + chr(39);
  k := pos(s1, str);
  if k > 0 then
    s1 := copy(str, k + length(s1), posex(chr(39) + ');', str,
        k) - k - length(s1))
  else
    s1 := '';
  s2 := 'name="asking_hash" value="';
  k := pos(s2, str);
  if k > 0 then
    s2 := copy(str, k + length(s2), posex('" id="', str, k) - k - length(s2))
  else
    s2 := '';
  Data.Add('username=' + userName);
  Data.Add('question=' + stringreplace(httpencode(
        'тестовый вопрос для проверки delphi программы)'), '+', '%2B',
      [rfReplaceAll]));
  Data.Add(s1 + '=' + s2);
  Data.Add('anonimous' + '=' + 'undefined');
  Data.Add('capctha' + '=' + '');
  str := IdHTTP1.Post('http://sprashivai.ru/questions/ask', Data);
  Data.free;
end;
Остается обработать полученный ответ в str.
Желательно, чтобы str = '{"status":"ok"}', но могут быть различные ошибки.
Большое спасибо, но не работает
Либо у меня руки из жопы, либо что

Вот такой ответ
Код:
 {"status":"error","message":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430"}
scroyler вне форума Ответить с цитированием
Старый 16.09.2012, 18:55   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,356
По умолчанию

Хм, странно.
Сайт пишет: Ошибка безопасности, попробуйте обновить страницу и попробовать снова (в вашем ответе).
У меня такой не возникало.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.09.2012, 18:57   #8
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Хм, странно.
Сайт пишет: Ошибка безопасности, попробуйте обновить страницу и попробовать снова (в вашем ответе).
У меня такой не возникало.
хмм... очень страно
Что мне теперь делать?
Может попробовать через м. версию?
scroyler вне форума Ответить с цитированием
Старый 17.09.2012, 00:04   #9
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

scroyler, какая у вас версия Delphi и версия компонентов Indy?
kangreon вне форума Ответить с цитированием
Старый 17.09.2012, 08:28   #10
scroyler
Форумчанин
 
Регистрация: 02.08.2011
Сообщений: 142
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
scroyler, какая у вас версия Delphi и версия компонентов Indy?
хе/хе2
версия идни-9.0 вроде
scroyler вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках 'studentka' Помощь студентам 6 30.11.2011 18:35
Вопрос по mySQL + Вопрос по RichEdit HTL Общие вопросы Delphi 4 01.01.2010 20:22
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Срочно! Помогите построить СДНФ на Паскале число переменных задает пользователь stscolt Помощь студентам 1 21.04.2008 22:20