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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2014, 15:30   #11
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Вопрос

Наверное все-таки метод POST нельзя применять вот к такой конструкции

PHP код:
<span class="b-form-input__box"><span class="b-form-input__region"><span class="b-form-input__region-filler"></span><span class="b-form-input__region-hint"></span></span><input class="b-form-input__input" id="id1167429850719" name="region" value="Нижний Новгород"></span
Потому что мой код

PHP код:
var
  
RegExpTRegExpr;
  
StrPageTStringList;
  
PostDataTIdMultiPartFormDataStream;
  
IdStrstring;
begin
  IdStr 
:= '';
  
RegExp := TRegExpr.Create;
  
StrPage := TStringList.Create;
  
PostData := TIdMultiPartFormDataStream.Create;

  
WebBrowser1.Navigate('http://tune.yandex.ru/region/');
  
repeat
    Application
.ProcessMessages;
  
until WebBrowser1.ReadyState 4;

  
// Получение HTML-кода страницы http://tune.yandex.ru/region/
  
StrPage.Text := WB_GetHTMLCode(WebBrowser1TEncoding.UTF8);

  
// Получение Id окна ввода
  
RegExp.Expression := '<input\sclass="b-form-input__input"\sid="(.+)"\sname';
  if 
RegExp.Exec(StrPage.Textthen IdStr := RegExp.Match[1];

  
// Добавление параметров и отправка запроса
  
PostData.AddFormField('id'IdStr);
  
PostData.AddFormField('name''region');
  
PostData.AddFormField('value''Тула');
  
Memo1.Lines.Text := IdHTTP1.Post('http://tune.yandex.ru/region/'PostData);
  
PostData.Free
Не дает результат... Т.е. здесь не подходит метод POST?...
max_delphi вне форума Ответить с цитированием
Старый 04.08.2014, 15:53   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Не дает результат... Т.е. здесь не подходит метод POST?...
Куда круче Там формы отправки просто нет. Так что хоть POST, GET, PUT, HAD вместе взятые не помгут.

Только API только по простому.
Человек_Борща вне форума Ответить с цитированием
Старый 04.08.2014, 17:28   #13
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Вопрос

Ну полный код формы вот

PHP код:
<form method="post" class="b-form b-form_is-bem_yes i-bem" onclick="return {'b-form':{name:'b-form', 'native_region':&quot;Нижний Новгород&quot;, 'region_id':&quot;47&quot;,stat:{'no_location':false,'regions_auto':false}}}" name="region" action="http://tune.yandex.ru/pages/region/do/save.xml"><input type="hidden" name="retpath" value="http://tune.yandex.ru">
          <
div class="b-form__control b-form__control_type_region">
            <
span class="b-form__label">
              <
span class="b-form-checkbox b-form-checkbox_type_auto b-form-checkbox_size_l i-bem" onclick="return {'b-form-checkbox':{name:'b-form-checkbox'}}"><span class="b-form-checkbox__inner"><input class="b-form-checkbox__checkbox i-bem" type="checkbox" id="auto" name="regions_auto" value="1"><class="b-form-checkbox__bg"><img class="b-form-checkbox__tick" title="" src="//yandex.st/lego/_/La6qi18Z8LwgnZdsAr1qy1GwCwo.gif" alt=""></i></span><label class="b-form-checkbox__label" for="auto">
                  
по умолчанию
                
</label></span>
            </
span>
          </
div>
          
              <
div class="b-form__control b-form__control_type_region">
                <
span class="b-form__label">
                  <
span class="b-form-checkbox b-form-checkbox_size_l b-form-checkbox_type_no-location i-bem" onclick="return {'b-form-checkbox':{name:'b-form-checkbox'}}"><span class="b-form-checkbox__inner"><input class="b-form-checkbox__checkbox i-bem" type="checkbox" name="no_location" value="1" id="id1170813160049"><class="b-form-checkbox__bg"><img class="b-form-checkbox__tick" title="" src="//yandex.st/lego/_/La6qi18Z8LwgnZdsAr1qy1GwCwo.gif" alt=""></i></span><label class="b-form-checkbox__label" for="id1170813160049">
                      
не уточнять моё местоположение
                    
</label></span>
                </
span>
                <
span class="b-form__info b-form__info_type_no-location"></span>
              </
div>
            
          <
input type="hidden" name="sk" value="y4de9b2ad7ac5e456b4cb24685e2dd510">
          <
span class="b-form-input b-form-input_is-bem_yes b-form-input_autocomplete_yes i-bem" onclick="return {'b-form-input':{name:'b-form-input',popupMods:{},dataprovider:{url:'\/api\/search\/3\/search.xml?lang=ru'}}}">
            
            <
span class="b-form-input__box"><span class="b-form-input__region"><span class="b-form-input__region-filler"></span><span class="b-form-input__region-hint"></span></span><input class="b-form-input__input" id="id1170813165923" name="region" value="Нижний Новгород"></span>
            <
span class="b-form-input__message b-form-input__message_type_error b-form-input__message_visibility" role="alert">
              
Такого города нет в нашей базе
            
</span>
            
            
            
          </
span>
          <
span onclick="return {'b-form-button':{name:'b-form-button'}}" class="b-form-button b-form-button_theme_grey-s b-form-button_size_s b-form-button_type_submit b-form-button_valign_middle i-bem"><class="b-form-button__left"></i><span class="b-form-button__content">
              <
span class="b-form-button__text">
                
Сохранить
              
</span>
            </
span><input type="submit" class="b-form-button__input" hidefocus="true" value=""></span>
          <
span onclick="return {'b-form-button':{name:'b-form-button', 'retpath':&quot;http:\/\/clck.yandex.ru\/redir\/dtype=stred\/pid=0\/cid=0\/*data=url%3Dhttp%253A%252F%252Ftune.yandex.ru&quot;}}" class="b-form-button b-form-button_theme_grey-s b-form-button_size_s b-form-button_type_back b-form-button_valign_middle i-bem"><class="b-form-button__left"></i><span class="b-form-button__content">
              <
span class="b-form-button__text">
                
Вернуться

              
</span>
            </
span><input type="button" class="b-form-button__input" hidefocus="true" value=""></span>
          <
div class="b-popupa b-popupa_theme_e8e9ec b-popupa_direction_down b-popupa_is-bem_yes b-popupa_type_no-location i-bem" onclick="return {'b-popupa':{name:'b-popupa'}}"><class="b-popupa__shadow"></i><table class="b-popupa__wrap" cellpadding="0" cellspacing="0"><tr><td class="b-popupa__wrap-cell"><div class="b-popupa__content">
              <
div class="b-location-hint">
                <
div class="b-location-hint__text">
                  
Отключает автоматические всплывающие  сообщения об уточнении города.
                </
div>
                <
div class="b-location-hint__img"></div>
              </
div>
            </
div></td></tr></table></div>
        </
form
Но тут ведь ничего не понять... Мне нужен кусок

<input class="b-form-input__input" id=

Так ничего нельзя придумать? )
max_delphi вне форума Ответить с цитированием
Старый 04.08.2014, 17:44   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ну взять и отправить на http://tune.yandex.ru/pages/region/do/save.xml все Input параметры формы.
Человек_Борща вне форума Ответить с цитированием
Старый 05.08.2014, 11:23   #15
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Вопрос

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Ну взять и отправить на http://tune.yandex.ru/pages/region/do/save.xml все Input параметры формы.
А это как??
max_delphi вне форума Ответить с цитированием
Старый 05.08.2014, 12:11   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
А это как??
просто
в postData перечисляете названия input полей, и их значения и делаете POST запрос по ссылке в форме.Как в 11 посту.
у вас в вышеприведенной форме всего 1 параметр:
<input type="hidden" name="sk" value="y4de9b2ad7ac5e456b4cb24685e2 dd510">

куда вводится город - не знаю. Говорю же, используете api.

Последний раз редактировалось Человек_Борща; 05.08.2014 в 12:16.
Человек_Борща вне форума Ответить с цитированием
Старый 05.08.2014, 13:50   #17
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Вопрос

Все-таки хочется без АПИ сделать )

Этот код как ни странно ничего не меняет:

PHP код:
var
  
RegExpTRegExpr;
  
StrPageTStringList;
  
PostDataTIdMultiPartFormDataStream;
  
ValStrIdStrstring;
begin
  ValStr 
:= '';
  
RegExp := TRegExpr.Create;
  
StrPage := TStringList.Create;
  
PostData := TIdMultiPartFormDataStream.Create;

  
WBYandex.Navigate('http://tune.yandex.ru/region/');
  
repeat
    Application
.ProcessMessages;
  
until WBYandex.ReadyState 4;

  
// Получение HTML-кода страницы http://tune.yandex.ru/region/
  
StrPage.Text := WB_GetHTMLCode(WBYandexTEncoding.UTF8);
  
MemTitles.Text := StrPage.Text;

  
// Получение значения "sk" (типа, value="y704ce6835ef0da988a192fa84038ff4b")
  
RegExp.Expression := '<input\stype="hidden"\sname="sk"\svalue="(.+)">';
  if 
RegExp.Exec(StrPage.Textthen ValStr := RegExp.Match[1];

  
// Получение Id окна ввода
  
RegExp.Expression := '<input\sclass="b-form-input__input"\sid="(.+)"\sname';
  if 
RegExp.Exec(StrPage.Textthen IdStr := RegExp.Match[1];

  
// Добавление параметров и отправка запроса
  
PostData.AddFormField('type''hidden');
  
PostData.AddFormField('name''sk');
  
PostData.AddFormField('value'ValStr);
  
PostData.AddFormField('class''b-form-input__input');
  
PostData.AddFormField('id'IdStr);
  
PostData.AddFormField('name''region');
  
PostData.AddFormField('value''Тула');
  
Memo1.Lines.Text := IdHTTP1.Post('http://tune.yandex.ru/pages/region/do/save.xml'PostData);

  
FreeAndNil(PostData); FreeAndNil(StrPage); FreeAndNil(RegExp); 
Задаю новый регион - "Тула". Но ничего не происходит... Вот какой код (здесь кусок кода) страницы он выдает:

Код HTML:
<!doctype html>
<html class="i-ua_js_no i-ua_css_standard">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=edge"><link rel="stylesheet" href="//yandex.st/passport/1.15/css/_pass.css">
<!--[if IE 6]><link href="//yandex.st/passport/1.15/css/_passport.ie6.css" rel="stylesheet" /><![endif]-->
<!--[if IE 7]><link href="//yandex.st/passport/1.15/css/_passport.ie7.css" rel="stylesheet" /><![endif]-->
<!--[if IE 8]><link href="//yandex.st/passport/1.15/css/_passport.ie8.css" rel="stylesheet" /><![endif]-->
<!--[if IE 9]><link href="//yandex.st/passport/1.15/css/_passport.ie9.css" rel="stylesheet" /><![endif]--><link rel="shortcut icon" type="image/x-icon" href="//yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico" /><title>Яндекс: Паспорт</title>
<script type="text/javascript" charset="utf-8" src="//yandex.st/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="//yandex.st/passport/1.15/js/_passport.ru.js"></script>
<script type="text/javascript">//<!--
(function(d,e,c,r){e=d.documentElement;c="className";r="replace";e[c]=e[c][r]("i-ua_js_no","i-ua_js_yes");if(d.compatMode!="CSS1Compat")e[c]=e[c][r]("i-ua_css_standard","i-ua_css_quirks")}(document));
//--></script>
<script type="text/javascript">
   Passport.messages = {
        'b-passwd-validator:space': '\u043f\u0440\u043e\u0431\u0435\u043b',
        'b-passwd-validator:symbol_one': '\u0441\u0438\u043c\u0432\u043e\u043b',
        'b-passwd-validator:symbol_some': '\u0441\u0438\u043c\u0432\u043e\u043b\u0430',
        'b-passwd-validator:symbol_many' : '\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432'
    };
    
    Passport.domain = 'ru';
    Passport.idkey  = '';
</script></head>
max_delphi вне форума Ответить с цитированием
Старый 05.08.2014, 13:52   #18
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Вопрос

Там дальше еще...

Код HTML:
<div class="l-indent"><div class="b-attention">Произошла ошибка.<br />Чтобы авторизация на&nbsp;Яндексе проходила корректно, необходимо включить куки (Cookies) в&nbsp;настройках вашего браузера. О&nbsp;том, как&nbsp;включить&nbsp;куки, можно прочитать в&nbsp;разделе помощи <a href="http://help.yandex.ru/common/?id=1111120" target="_blank">Что такое cookies</a>. Важное условие - настройки должны быть выполнены именно&nbsp;так, как&nbsp;описано на&nbsp;этой странице.
Но при чем здесь могут быть куки в браузере? Браузер у меня гугл хром.
max_delphi вне форума Ответить с цитированием
Старый 05.08.2014, 14:00   #19
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Этот код как ни странно ничего не меняет:
Наверное потому что надо детально изучать запросы от браузера к серверу, смотреть что и откуда берется. Кароче геморой. Вы, будучи новичком хотите этим аниматься?
Мне абсолютно лень Я буду использовать API когда надо будет.
Человек_Борща вне форума Ответить с цитированием
Старый 05.08.2014, 14:30   #20
max_delphi
Пользователь
 
Регистрация: 02.08.2014
Сообщений: 15
Радость

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Наверное потому что надо детально изучать запросы от браузера к серверу, смотреть что и откуда берется. Кароче геморой. Вы, будучи новичком хотите этим аниматься?
Нужда заставляет и этим заниматься... Если ничего не получится, тогда попробую с АПИ разобраться.
max_delphi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
авторизация в яндексе DeDoK Работа с сетью в Delphi 3 30.10.2010 23:02
Кодирование url в яндексе zver777 Работа с сетью в Delphi 12 05.09.2010 15:00
Не отображается описание статьи в Яндексе VseOK PHP 4 01.03.2010 03:49