Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.01.2012, 21:39
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию Выполнение Post запроса Synapse

Использую компонент synapse для работы с HTTPS. И тут потребовалось отправить Post запрос. Отправляю, получаю ошибку:
HTTP/1.1 400 Bad Request
Server: nginx/0.7.59
Date: Wed, 25 Jan 2012 17:25:33 GMT
Content-Type: text/html
Content-Length: 173
Connection: close
я так понимаю что неправильно сформирован запрос, но я вроде собрал все что отправляется в form, вот мой текущий запрос:
PHP код:
Data.WriteString('act=login');
Data.WriteString('soft=1');
Data.WriteString('q='+q);
Data.WriteString('ip_h='+ip_h);
Data.WriteString('from_host='+from_host);
Data.WriteString('from_protocol='+from_protocol);
Data.WriteString('to='+too);
Data.WriteString('expire='+expire);
Data.WriteString('email='+Edit1.text);
Data.WriteString('pass='+Edit2.text);
Data.Position:=0;
HTTP.Document.LoadFromStream(Data);
HTTP.HTTPMethod('POST','https://login.vk.com/'); 
Memo2.Lines.AddStrings(HTTP.Headers); 
или он же в GET форме:
PHP код:
HTTPGetText('https://login.vk.com/?act=login&soft=1&q=1&ip_h='+ip_h+'&from_host='+from_host+'&from_protocol='+from_protocol+'&to='+too+'&expire='+expire+'&email='+Edit1.text+'&pass='+Edit2.text,dat); 

Парсю вот с этой страницыобрезал начало и конец чтоб не мешались)
PHP код:
function login() {
    
ge('expire').value = (isChecked('expire_checkbox')) ? 0;
    
ge('login_submit').submit();
    return 
false;
  }
  function 
approve() {
    
location.href "https://oauth.vk.com/grant_access?hash=c37ade320f0ee143ac&client_id=2761850&settings=1027&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&state=&token_type=0";
  }
  function 
cancel() {
    
location.href "https://oauth.vk.com/grant_access?hash=c37ade320f0ee143ac&client_id=2761850&settings=1027&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&cancel=1&state=&token_type=0";
  }
  if (
parent && parent != window) {
    
location.href "https://oauth.vk.com/blank.html";
  }
// ]]>
</script>
</head>
</html>
<body class="VK">
<div class="scroll_fix_wrap" id="page_wrap">
<div>
  <div id="page_layout">
    <div id="page_header" class="p_head p_head_l0">
      <div class="back"></div>
      <div class="left"></div>
      <div class="right"></div>
      <div class="content">
        <a id="home" href="http://vkontakte.ru/" target="_blank" class="fl_l"></a>

        <div class="auth_items">
          
        </div>
      </div>
    </div>
  </div>
</div>
</div>

<div class="oauth_page_wrap">
<div class="oauth_page_main">
<div class="oauth_header">
Вход в систему
</div>

<div class="oauth_access_cont">
  <div id="box" class="box">
  <div class="oauth_info">
    <div class="app_info">
      <img src="http://vkontakte.ru//images/dquestion_d.gif" />
    </div>
    

<div class="oauth_error">
  
</div>
https://login.vk.com/?act=login&soft=1&q=1&ip_h=40e3d75bba0f460b9d&from_host=oauth.vk.com&from_protocol=http&to=aHR0cDovL29hdXRoLnZrLmNvbS9vYXV0aC9hdXRob3JpemU/Y2xpZW50X2lkPTI3NjE4NTAmcmVkaXJlY3RfdXJpPWh0dHAlM0ElMkYlMkZvYXV0aC52ay5jb20lMkZibGFuay5odG1sJnJlc3BvbnNlX3R5cGU9dG9rZW4mc2NvcGU9MTAyNyZzdGF0ZT0mZGlzcGxheT1wYWdl&expire=0&email=kingcss@mail.ru&pass=Kingcss27037310
<form method="POST" id="login_submit" action="https://login.vk.com/?act=login&soft=1">
<input type="hidden" name="q" value="1">
<input type="hidden" name="ip_h" value="40e3d75gaweb9d" />
<input type="hidden" name="from_host" value="oauth.vk.com">
<input type="hidden" name="from_protocol" value="http">
<input type="hidden" name="to" value="aHR0cDovL29hdXRoLnZrLmNvbS9vYXV0aC9hdXRob3JpemU/Y2xpZW50X2lkPTI3NjE4NTAmcmVkaXJlY3RfdXJpPWh0dHagaggagwvYXV0aC52ay5jb20lwawaggawuay5odG1sJnJlc3BvbnNlX3R5cGU9dG9rZW4mc2NvcGU9MTAyNyZzdGF0ZT0mgaheT1wYWdl">
<input type="hidden" id="expire" name="expire" value="0">

<table class="login">
<tr>
<td class="label">Телефон или e-mail:</td>
<td><input type="text" name="email" value=""></td>
</tr>
<tr>
<td class="label">Пароль:</td>
<td><input type="password" name="pass"></td>
</tr>

<tr>
<td class="label"></td>
<td><div class="checkbox fl_l" id="expire_checkbox" onclick="checkbox(this)"><div></div>Чужой компьютер</div></td>
</tr>
</table>
</form>

  </div>
  </div>
</div>



<div class="bottom_buttons">
  <div class="button_gray fl_r"><button id="install_cancel" onclick="return cancel();">Отмена</button></div>
  <div class="button_blue fl_r"><button id="install_allow" onclick="return login();" type="submit">Войти</button></div>
  <br class="clear" />
</div>
</div>
</div> 

Парсю правильно, в переменных именно те значения которые на странице в hidden, Если вбиваю Get запрос вручную в браузере, подставляя значения переменных все нормально.

Последний раз редактировалось Kingcss, 25.01.2012 в 21:46.
Ответить с цитированием
  #2  
Старый 25.01.2012, 21:58
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Для HTTPS подключай ssl_openssl
Ответить с цитированием
  #3  
Старый 25.01.2012, 22:15
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

Подключена она, обычные же запросы выполняются(получение друзей и т.п.) + перед тем как выкинуть на страницу авторизации грузит несколько других страниц, с них автоматический редиректна след. и.д. и потом только на эту
Ответить с цитированием
  #4  
Старый 26.01.2012, 08:24
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

User-Agent попробуй подставить от браузера, как и другие поля заголовков. Сам сталкивался.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 26.01.2012, 14:13
Mifody Mifody вне форума
Прохожий
 
Регистрация: 15.12.2010
Сообщения: 25
Репутация: 10
По умолчанию

Код:
Data.WriteString('act=login'); 
а вот так, в синапсе делать низяяя .
у тебя получились параметры в запросе не разделенные апострофами "&".
Я обычно сапрос формирую так:
Код:
ParamStr := 'act=login&soft=1&q='+q+ '&ip_h='+ip_h + '&from_host='+from_host+'&from_protocol='+from_protocol+'&to='+too+'&expire='+expire+'&email='+Edit1.text + 'pass='+Edit2.text;
HTTP.Document.Write(Pointer(ParamStr)^, Length(ParamStr)); 
Ответить с цитированием
  #6  
Старый 26.01.2012, 18:32
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Почему же )
Можно поступить и по другому
Код:
Data.WriteString('act=login'); 
Data.WriteString('&user=user'); 
Data.WriteString('&pass=password'); 
Ответить с цитированием
  #7  
Старый 26.01.2012, 21:01
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

Способ Mifody не помог, все подставил, и всеравно такая же ошибка.
DJ PhoeniX ты не мог бы подсказать, что и каким образом туда подставлять.
Ответить с цитированием
  #8  
Старый 26.01.2012, 21:21
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

С этими инструментами не работал, так что не подскажу...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #9  
Старый 27.01.2012, 11:35
Mifody Mifody вне форума
Прохожий
 
Регистрация: 15.12.2010
Сообщения: 25
Репутация: 10
По умолчанию

Kingcss код в "студию", если не хочется светить - в личку .
Просто не хочется гадать в чем именно проблема. Может и в коде, до отправки данных.

На самом деле, решение примитивное - снифер, он в таких случаях очень спасает.

кстати, зачем такая куча переменных параметров для контакта? онож там меньше на много http://www.smw75.ru/avtorizaciya-vkontakte/ вродн как с тех времен она и не менялась?

Последний раз редактировалось Mifody, 27.01.2012 в 11:38.
Ответить с цитированием
  #10  
Старый 27.01.2012, 15:27
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

Я просто думал нужно отправлять все поля в form , код вечером в личку кину
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter