За последние 24 часа нас посетили 17700 программистов и 1663 робота. Сейчас ищут 920 программистов ...

POST запрос php

Тема в разделе "Прочие вопросы по PHP", создана пользователем Jmunb, 21 янв 2012.

  1. Jmunb

    Jmunb Активный пользователь

    С нами с:
    22 окт 2010
    Сообщения:
    21
    Симпатии:
    0
    Адрес:
    Россия
    Добрый день есть такой код написанный на jQuery:
    Код (Text):
    1. $.ajax({type:'POST',url:'http://host.ru/getresult.php',data:request,dataType:'json',traditional:true,error:function(){
    2.         /*тут обработка ответа*/
    3. });
    data - массив с параметрами, при отправке выглядит так "locale=ru&cityId=345&countryId=166775&departureDateMin=21.01.2012&departureDateMax=28.01.2012&nightsMin=7&nightsMax=15&adults=2&children=0&priceMin=0&priceMax=15000&currency=5561&findByPrice=true&tourId=9009296&tourId=9009296%2C169028&hotelClassId=9006279&hotelClassId=9006280&hotelClassId=9006281&feedId=9006288&feedId=9006289&hotelInStop=false&noTicketsTo=false&noTicketsFrom=false&version=2"
    сам заголовок вот так:
    "Accept application/json, text/javascript, */*
    Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7
    Accept-Encoding gzip, deflate
    Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    Connection keep-alive
    Content-Length 393
    Content-Type application/x-www-form-urlencoded; charset=UTF-8
    Host ruban.pro
    Referer http://ruban.pro/turt/
    User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
    X-Requested-With XMLHttpRequest"

    надо переписать отправку на php пробовал 2-мя способаси.
    1-й
    Код (Text):
    1. $context = stream_context_create(array(
    2.     }
    3.         'http' => array(
    4.             'method' => 'POST',
    5.             'header' => 'Accept application/json, text/javascript, */*' . PHP_EOL . 'Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7' . PHP_EOL . 'Accept-Encoding  gzip, deflate' . PHP_EOL . 'Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' . PHP_EOL . 'Connection    keep-alive' . PHP_EOL . 'Content-Length 369' . PHP_EOL . 'Content-Type  application/x-www-form-urlencoded; charset=UTF-8' . PHP_EOL . 'Host json.teztour.com' . PHP_EOL . 'Referer  http://json.teztour.com/static/ats/search_ru.html' . PHP_EOL . 'X-Requested-With    XMLHttpRequest' . PHP_EOL . 'Content-Type: text/javascript' . PHP_EOL,
    6.             'user_agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1' . PHP_EOL,
    7.             'content' => 'locale=ru&cityId=521&countryId=166775&departureDateMin=21.01.2012&departureDateMax=28.01.2012&nightsMin=7&nightsMax=15&adults=2&children=0&priceMin=0&priceMax=15000&currency=5561&findByPrice=true&tourId=9009296&hotelClassId=9006279&hotelClassId=9006280&hotelClassId=9006281&feedId=9006288&feedId=9006289&hotelInStop=false&noTicketsTo=false&noTicketsFrom=false&version=2',
    8.         ),
    9.     ));
    10.     echo file_get_contents('http://json.teztour.com/agencytoursearch/getResult', $use_include_path = false,$context);
    2-й
    Код (Text):
    1. $query = '';
    2.     foreach($_POST as $key => $value) {
    3.         $query .= $key.'='.$value.'&';
    4.     }  
    5.     echo $query;
    6.     $ch = curl_init();
    7.     //curl_setopt($ch, CURLOPT_PROXY, "1.2.3.4:123"); //если нужен прокси
    8.     curl_setopt($ch, CURLOPT_POST, 1);
    9.     curl_setopt($ch, CURLOPT_URL, "http://json.teztour.com/agencytoursearch/getResult"); //куда шлем
    10.     curl_setopt($ch, CURLOPT_POSTFIELDS, $query); //что шлем
    11.     curl_setopt($ch, CURLOPT_REFERER, "http://ruban.pro/turt/");
    12.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.1.4322)");
    13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    14.     curl_setopt($ch, CURLOPT_HEADER, 1);
    15.     curl_setopt($ch, CURLOPT_NOBODY, 0);
    16.     $result=curl_exec ($ch);
    17.     curl_close ($ch);
    18.  
    19.     echo $result;
    что не так делаю?
     
  2. Jmunb

    Jmunb Активный пользователь

    С нами с:
    22 окт 2010
    Сообщения:
    21
    Симпатии:
    0
    Адрес:
    Россия
    С курлом разобрался, теперь другой вопрос сервер отправляет строку post запроса такого вида:
    locale=ru&
    cityId=345&
    countryId=166775&
    departureDateMin=21.01.2012&
    departureDateMax=28.01.2012&
    nightsMin=7&
    nightsMax=15&
    adults=2&
    children=0&
    priceMin=0&
    priceMax=15000&
    currency=5561&
    findByPrice=true&
    tourId=9009296&hotelClassId=9006279&
    hotelClassId=9006280&
    hotelClassId=9006281&
    feedId=9006288&
    feedId=9006289&
    hotelInStop=false&
    noTicketsTo=false&
    noTicketsFrom=false&
    version=2

    как можно заметить в строке запроса параметры за названием feedId, hotelClassId присутствуют не однократно
    как мне в моем скрипте получить не массив пост а исходную строку post запроса?
     
  3. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Код (Text):
    1. <?php
    2. $postParams = 'param1=1&param2=2&param3=3&param3=3';
    3. $postParams = implode('&', array_unique(explode('&', $postParams)));
     
  4. asokol

    asokol Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Jmunb, а каким образом получается строка запроса, которая приведена во 2 посте?
     
  5. Jmunb

    Jmunb Активный пользователь

    С нами с:
    22 окт 2010
    Сообщения:
    21
    Симпатии:
    0
    Адрес:
    Россия
    строку взял не посредственно на стороне сервера. но код править там нельзя=(
    получил post строку в исходном виде с помощью file_get_content('php://input');