我在我的php脚本中使用HttpRequest类,但当我将此脚本上传到我的托管服务提供商的服务器时,执行它时出现致命错误:
致命错误:Class' 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中使用此请求,因为它不适用于空数据字符串?
答案 0 :(得分:3)
您可以在php中使用CURL:
$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;
并且空数据字符串在发布请求中没有意义,但是我已经用空数据字符串检查了它,它运行得很安静。
答案 1 :(得分:2)
你可以使用像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();
}
您不必使用整个框架只需包含(或自动加载)您需要的类。
答案 2 :(得分:1)
使用php中的cURL
<?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 Difference between Curl and HttpRequest
答案 3 :(得分:0)
建议的卷曲方法略有变化,我解码返回的json,如this snippet