Альтернатива для HTTPRequest в php

Я использую класс HttpRequest в своем php-скрипте, но когда я загрузил этот скрипт на сервер моего хостинг-провайдера, я получаю фатальную ошибку при ее выполнении:

Неустранимая ошибка: класс HttpRequest не найден в … на линии 87

Я считаю, причина в том, что конфигурация php.ini моего хостинг-провайдера не включает расширение, поддерживающее HttpRequest. Когда я связался с ними, они сказали, что мы не можем установить следующие расширения на общем хостинге. Поэтому я хочу альтернативу для httpRequest, которую я делаю так:

$url= http://ip:8080/folder/SuspendSubscriber?subscriberId=5 $data_string=""; $request = new HTTPRequest($url, HTTP_METH_POST); $request->setRawPostData($data_string); $request->send(); $response = $request->getResponseBody(); $response= json_decode($response, true); return $response; 

Или Как я могу использовать этот запрос в curl, поскольку он не работает для пустого набора данных?

Related of "Альтернатива для HTTPRequest в php"

Вы можете использовать CURL в php следующим образом:

 $ch = curl_init( $url ); $data_string = " "; curl_setopt( $ch, CURLOPT_POSTFIELDS, $data_string ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $result = curl_exec($ch); curl_close($ch); return $result; 

и пустая строка данных не имеет смысла в почтовом запросе, но я проверил ее с пустой строкой данных, и она работает спокойно.

вы можете использовать фреймворк вроде zend. как правило, имеют несколько адаптеров (curl, socket, proxy).

вот образец с ZF2:

  $request = new \Zend\Http\Request(); $request->setUri('[url]'); $request->setMethod(\Zend\Http\Request::METHOD_POST); $request->getPost()->set('key', $value); $client = new \Zend\Http\Client(); $client->setEncType('application/x-www-form-urlencoded'); $response = false; try { /* @var $response \Zend\Http\Response */ $response = $client->dispatch($request); } catch (Exception $e) { //handle error } if ($response && $response->isSuccess()) { $result = $response->getBody(); } else { $error = $response->getBody(); } 

вам не нужно использовать всю инфраструктуру, просто включите (или автоматически загрузите) классы, которые вам нужны.

Использовать cURL в php

 <?php // A very simple PHP example that sends a HTTP POST to a remote site $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://example.com/feed.rss"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"postvar1=value1&postvar2=value2"); // in real life you should use something like: // curl_setopt($ch, CURLOPT_POSTFIELDS, // http_build_query(array('postvar1' => 'value1'))); // receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec ($ch); curl_close ($ch); // further processing .... if ($server_output == "OK") { ... } else { ... } ?> 

подробнее см. эту разницу в PHP между Curl и HttpRequest

небольшой вариант на предлагаемые curl методы, я декодирую json, который возвращается, как в этом фрагменте