На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Помогите с CURL , Не получается отправить POST запрос.
      Всем привет,
      задачка одновременно простая и интересная, -пишу робота который будет отслеживать доставку груза по номеру накладной вот этой компании, Вот по этой ссылке

      С CURL раньше работал но с методом ГЕТ.
      Накидал вот такой код (брал из примера)
      ExpandedWrap disabled
          $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
         
          $url=' Наша ссылка, см в тексте';
         
          $postdata="trace1=11-5072-5400"; // номер накладной для примера
         
          $ch = curl_init( $url );
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_HEADER, 0);
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
          curl_setopt($ch, CURLOPT_ENCODING, "");
          curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
          curl_setopt($ch, CURLOPT_TIMEOUT, 120);
          curl_setopt($ch, CURLOPT_FAILONERROR, 1);
          curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
          curl_setopt($ch, CURLOPT_POST, 1);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
        //  curl_setopt($ch, CURLOPT_COOKIEJAR, "z://coo.txt");
         // curl_setopt($ch, CURLOPT_COOKIEFILE,"z://coo.txt");
         
         
          $content= curl_exec( $ch );
          $err     = curl_errno( $ch );
          $errmsg  = curl_error( $ch );
          $header  = curl_getinfo( $ch );
          curl_close( $ch );
         
         
            echo $content;
          $header['errno']   = $err;
          $header['errmsg']  = $errmsg;
          $header['content'] = $content;
          return $header;


      Скрипт нормально выводит мне весь контент страницы, но как я понимаю сам ПОСТ запрос не срабатывает, так как не вижу данных о доставке.
      В коде страницы, я нашел скрытое поле, и попробовал изменить пост данные
      ExpandedWrap disabled
        $postdata="trace1=11-5072-5400&trace_mode=1";
      Но тоже ничего не вышло..

      В чем засада?
        ExpandedWrap disabled
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        вот эта штука криво работает при определённых обстоятельствах.
          Отключил, результата не дало.(
            Еще там есть trace_submit
              panaslonikТОЧНО!
              Я об этож помнил, и сначала составил такой пост
              ExpandedWrap disabled
                $postdata="trace1=11-5072-5400&trace_mode=1&trace_submit";

              и сразу не заметил что в конце переменной должен стоять знак "="
              Добавил его и заработало)
              ExpandedWrap disabled
                $postdata="trace1=11-5072-5400&trace_mode=1&trace_submit=";


              спасибо тебе!!
                Цитата Demon_id @
                вот эта штука криво работает при определённых обстоятельствах.
                м?
                  Цитата Pr0[)!9Y @
                  Цитата (Demon_id @ Вчера, 15:23)
                  вот эта штука криво работает при определённых обстоятельствах.
                  м?

                  CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set
                    А, это. Ну он об этом сообщает, так что он не работает совсем. А не криво
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0273 ]   [ 15 queries used ]   [ Generated: 4.05.24, 15:48 GMT ]