как отправить HTTP-запрос методом GET в PHP на другой веб-сайт

Я разрабатываю веб-приложение для отправки SMS на мобильный сайт с сайта типа 160by2 .

Я могу подготовить URL-адрес, необходимый для запроса HTTP GET, как указано в API, предоставленном провайдером SMS-шлюза smslane.com , вот ссылка для API .

как отправить HTTP-запрос с PHP?

Я использовал cURL для этой цели, но ответ не отображается. вот код, который я использовал,

<?php $url="http://smslane.com/vendorsms/pushsms.aspx?user=abc&password=xyz&msisdn=919898123456&sid=WebSMS&msg=Test message from SMSLane&fl=0"; $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url ); $content = curl_exec( $ch ); $response = curl_getinfo( $ch ); curl_close ( $ch ); echo $content; ?> 

fsockopen() не использовался, поскольку номер порта неизвестен, отправлен в fsockopen() поддержки для номера порта. (если какой-либо код для fsockopen через GET-метод предлагается :). )

есть ли другие методы для этого?

любая помощь приветствуется.

Заранее спасибо.

РЕДАКТИРОВАТЬ

Может ли кто-нибудь сказать мне, есть ли другой способ отправить этот HTTP-запрос, кроме cURL, и, если возможно, дать код для этого.

Я спрашиваю об этом, потому что текущий код cURL занимает слишком много времени для выполнения и не работает через 60 секунд, я увеличил max_execution_time до 120 в php.ini в моей локальной системе, хотя это не делает мне хорошо :(.

    Ваша проблема заключается в том, как вы создаете URL-адрес. Пространства, которые вы включаете в строку запроса, приведут к отправке отклоненного URL-адреса запроса.

    Вот пример, который повторяет ваши обстоятельства:

    request.php :

     <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'http://your_server/response.php?foo=yes we can&baz=foo bar' ); $content = curl_exec($ch); echo $content; 

    response.php :

     <?php print_r($_GET); 

    Выходной файл request.php:

     Array ( [foo] => yes ) 

    Причина этого заключается в том, что строка запроса неправильно кодируется, и сервер, интерпретирующий запрос, предполагает, что URL-адрес заканчивается в первом пространстве, которое в этом случае находится в середине запроса: foo=yes we can&baz=foo bar .

    Вам нужно создать свой URL-адрес, используя http_build_query , который будет правильно убирать строку запроса и, как правило, делает код более читаемым:

     echo http_build_query(array( 'user'=>'abc', 'password'=>'xyz', 'msisdn'=>'1234', 'sid'=>'WebSMS', 'msg'=>'Test message from SMSLane', 'fl'=>0 )); 

    Вам также необходимо установить CURLOPT_RETURNTRANSFER:

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     <?php print file_get_contents("http://some_server/some_file.php?some_args=true"); ?> 

    Нижеприведенный код сделает запрос HTTP с curl и возвращает ответ в $content .

     <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,'http://www.anydomain.com/anyapi.php?a=parameters'); $content = curl_exec($ch); echo $content; ?> 

    ничего плохого в коде, который я могу сразу увидеть. вы пробовали вставить URL-адрес в браузер, чтобы вы могли увидеть ответ? вы можете даже использовать wget для загрузки ответа на файл. Я полагаю, что если вы хотите попробовать fsocket, то вы будете использовать порт 80, поскольку это порт http по умолчанию.

    Попробуйте использовать следующий код.

     $r = new HttpRequest('http://www.xencomsoftware.net/configurator/tracker/ip.php', HttpRequest::METH_GET); try { $r->send(); echo $r->getResponseCode(); if ($r->getResponseCode() == 200) { } } 

    убедитесь, что вы загрузили расширение HttpRequest (обменивайтесь объектом 0 на своем сервере.