16

我只想用 post 参数做一个 httprequest。我用了这段代码

$r = new HttpRequest($url, HttpRequest::METH_POST);
$r->send();

但我收到此错误:

ErrorException [致命错误]:类'HttpRequest'不是

extension=php_http.dll将此添加到我的 php.ini 中,但问题仍然存在。我下载了 php_http.dll 文件并将其插入到 php 的 ext 文件夹中,但它已经存在,所以我替换了它,但仍然有同样的问题。

任何帮助,将不胜感激

4

3 回答 3

7

如果您使用的是 php 5.4 或更高版本,您的扩展库中似乎没有包含 php_http.dll 文件(除非有人能找到我错过的一个??)。

在更新 php.ini 配置文件以包含扩展名后,我唯一能发现在启动 Apache 服务器时生成的错误。

但是不要害怕,因为似乎有一个 GitHub 项目在类中提供功能,而不是扩展。单击此处查找所需的课程

如果您将此类保存在项目中并像这样调用;

include_once('HttpRequest.php'); //where HttpRequest.php is the saved file
$url= 'http://www.google.com/';
$r = new HttpRequest($url, "POST");
var_dump($r->send());

如果做不到这一点,似乎唯一可行的选择是自己从这里的源代码编译 .dll :(

否则,另一种选择是改用 cURL。cURL 提供了httpRequest.

一个简单的例子是;

$url = "http://www.google.com/";        
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 
$head = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
var_dump($head);

更多细节和更好的例子可以在 php 网站上找到这里

我希望这有助于回答您的问题,而不是给您留下更多...

于 2013-12-16T22:09:54.073 回答
5

你需要确保你有一个php_http.dll匹配你的 PHP 版本。您可以<?php phpinfo();检查是否加载了扩展(查找“http”,它将列出版本和可用类)。

如果扩展名没有出现在 中phpinfo(),您应该检查您的日志以了解问题出在哪里,或者直接从命令提示符运行 PHP 二进制文件 — php -i. 如果加载动态库时出现任何错误,它将显示在对话框中。请注意,即使扩展加载失败,PHP 仍将继续运行。

于 2013-12-16T22:34:41.317 回答
4

你可以重新安装包

$ pecl install -f pecl_http-1.7.6

或使用 curl 访问数据,如此片段

于 2015-07-09T20:42:43.533 回答