скрипт не получает ответ

scandal

Новичок
скрипт не получает ответ

Здравствуйте!
Когда в адресной строке браузера ввожу:
http://ip-here:10092/?OPERATION=COMMON-SUBSCR-PWD-GET&MSISDN=xxx&PARAM1=0
то мне приходит СМСка с паролем и в окне браузера отображается ответ в формате XML
но когда пытаюсь сделать тоже самое с помощью php-скрипта, то приходит СМСка, а скрипт ничего не получает.
Пытаюсь двумя способами.
Способ I.
PHP:
$url="http://ip-here:10092/?OPERATION=COMMON-SUBSCR-PWD-GET&MSISDN=xxx&PARAM1=0";
$s=RunCmd($url);
echo $s;

function RunCmd($url) { //функция скачивания контента ссылки
// инициализация сеанса cURL
    $ch = curl_init();
// установка URL
    curl_setopt($ch, CURLOPT_URL, $url);
// включение вывода заголовка в полученной странице
    curl_setopt($ch, CURLOPT_HEADER, 1);
// загруженная страница будет послана в переменную, а не выведена браузером
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// загрузка страницы
    $page = curl_exec($ch); 
// завершение сеанса и освобождение ресурсов
    curl_close($ch);
    return $page;
}
Получаю ответ:
PHP:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: WASESSION=WASession_3872464_59652624 Set-Cookie: 
JSESSIONID=FC909926FEC7C0FCF5C68720515A2834; Path=/ Set-Cookie: WASESSION=finished; Expires=Thu, 01-Jan-1970 00:00:10 GMT 
Set-Cookie: WASESSION=finished; Expires=Thu, 01-Jan-1970 00:00:10 GMT Content-Type: application/vnd.wap.xhtml+xml;
charset=UTF-8 Content-Length: 0 Date: Wed, 06 Oct 2010 06:49:30 GMT
Способ II.
PHP:
$url="http://ip-here:10092/?OPERATION=COMMON-SUBSCR-PWD-GET&MSISDN=xxx&PARAM1=0";

$handle = @fopen($url, "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
Подскажите, в чем тут ошибка и как можно исправить?
Нужно, чтоб php-скрипт сохранял ответ сервера в переменную.
Спасибо!
 

baev

‹°°¬•
Команда форума
scandal, Вы не по адресу вопросы задаёте.
Спрашивать надо у владельцев сайта «ip-here».
 

Sepuka

Новичок
Посмотри что браузер отправляет (какие заголовки) и отправь тоже самое -> получишь нормальный ответ
 

Sepuka

Новичок
Я пользуюсь мозилой и там самый простой и удобный способ это установить расширение https://addons.mozilla.org/ru/firefox/addon/3829/ или ему подобное, там ты увидишь какие заговолки отправляет браузер и какие получает. Ты в своем запросе не отправляешь специфичных заголовком, например таких как user-agent и сервер тебе отвечает плохо.
 

scandal

Новичок
Установил этот плагин.
Мой браузер посылает это:
Host=192.168.201.137:10092
User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 MRA 5.4 (build 02647) Firefox/3.6.10 sputnik 2.3.0.76
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language=ru
Accept-Encoding=gzip,deflate
Accept-Charset=windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive=115
Connection=keep-alive
If-Modified-Since=: Wed, 06 Oct October 2010 11:24:49 GMT

Как сделать так, чтобы php-скрипт тоже самое посылал?

-~{}~ 07.10.10 11:21:

Нашел в Инете вот это:
// вход в систему
// имя хоста, куда будем заходить
$hostname = 'your.seruce.host.com';
// инициализация cURL
$ch = curl_init('https://'.$hostname.'/index.php');
// получать заголовки
curl_setopt ($ch, CURLOPT_HEADER, 1);
// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
// елси проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER, 'https://'.$hostname.'/index.php');
// использовать метод POST
curl_setopt ($ch, CURLOPT_POST, 1);
// сохранять информацию Cookie в файл, чтобы потом можно было ее использовать
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// передаем поля формы
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=your_robot&pass=Your_R0b0t!PassWd1&mod=Login');
// возвращать результат работы
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// выполнить запрос
curl_exec ($ch);
// получить результат работы
$result = curl_multi_getcontent ($ch);
// вывести результат
echo "\n".'Login OK'."\n".'[result ===8<===>'."\n".$result."\n".'<===>8=== result]'."\n";
// закрыть сессию работы с cURL
curl_close ($ch);

Чего не хватит, еще спрошу.

СПАСИБО!
 

Sepuka

Новичок
Если пользуешься курлом добавать параметры через setopt
Можно также воспользоваться http://ru2.php.net/manual/en/function.fsockopen.php что еще проще, построчно залей свои заголовки, каждая строка заканчивается \r\n без пробелов, последняя строка заканчивается \r\n\r\n. и смотри ответ
Заголовки от тела страницы также отделяются двойным \r\n\r\n и ты можешь сразу их разрубить str_split('\r\n\r\n', $page, 2)
 

scandal

Новичок
Слушайте, а ведь получилось. И оказалось достаточно добавить "User-Agent: "
PHP:
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 MRA 5.4 (build 02647) Firefox/3.6.10");
Спасибо!
 
Сверху