how to send HTTP request by GET method in PHP to another website

I'm developing a web application for sending SMS to mobile from website like 160by2.

I can prepare the URL required for the HTTP GET request as mentioned in the API provided by the SMS Gateway provider smslane.com, here is the link for the API.

how to send the HTTP request from PHP?

I used cURL for that purpose but the response is not displayed. here is the code i used,


fsockopen() was not used because port number unknown, mailed the support team for port number. (if any code for fsockopen through GET method is invited :). )

are there any other methods for doing this?

any help is welcome.

Thanks in advance.

EDIT

Could any one tell me is there any other way to send this HTTP Request except cURL and if possible give code for that.

I'm asking this because the current cURL code taking too much time for execution and fails after 60 seconds, i increased max_execution_time to 120 in php.ini on my local system even though it is not doing good for me :( .

11
задан srinivas 21 August 2010 в 03:42
поделиться

4 ответа

Ваша проблема в том, как вы создаете 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, мы можем & baz = foo bar .

Вам необходимо создать свой URL с помощью http_build_query , который позаботится о правильном кодировании urlencoding вашей строки запроса и, как правило, сделает код более читаемым:

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);
11
ответ дан 3 December 2019 в 05:11
поделиться
<?php
print file_get_contents("http://some_server/some_file.php?some_args=true");
?>
7
ответ дан 3 December 2019 в 05:11
поделиться

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

1
ответ дан 3 December 2019 в 05:11
поделиться

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

$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 на вашем сервере.

1
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: