Я использую класс 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, поскольку он не работает для пустого набора данных?
Вы можете использовать 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, который возвращается, как в этом фрагменте