呼叫新的HttpRequest失败
我想获得一个PHP脚本工作。该脚本的目的是呼叫Web服务。我已经将脚本简化为最简单的组件,但仍然失败。那就是:呼叫新的HttpRequest失败
<?php
print "Hello";
$request = new HttpRequest('http://www.pivotaltracker.com/services/v3/source_commits', HttpRequest::METH_POST);
print "Done";
?>
输出是:
D:\svn\svndb\hooks>"c:\Program Files\PHP\php.exe" -f test.php
Hello
D:\svn\svndb\hooks>
正如你所看到的,试图实例的HttpRequest的实例时,脚本失败。但是,不会抛出异常。
我不是一个PHP程序...我只是想让这个功能工作。我怀疑我没有加载我需要的扩展库......但我无法弄清楚哪一个是,如果确实是这个问题。任何帮助,将不胜感激。
我在Windows 2003上运行。我正在运行php 5.3.3。
我确实运行过phpinfo(),但因为它太大而不愿在此发布结果。有没有phpinfo()输出的一部分有助于提供?
在此先感谢。
鲍勃
把一个error_reporting(E_ALL);
在前面,看看会发生什么。
我敢打赌,HTTPRequest
类不存在。 HTTP扩展名是PECL package that needs to be installed separately。
你完全正确。感谢您的帮助。 – Spob 2010-10-01 15:56:34
- 通过error_reporting(E_ALL)报告错误;
- 启用显示错误ini_set('display_errors',1);
更好地从php.ini更改这些设置。 如果它不工作看Apache日志(error.log中)
你可以使用卷曲为目的很简单:
<?php
$url = "http://www.pivotaltracker.com/services/v3/source_commits";
$ch = curl_init();
// set the target url
curl_setopt($ch, CURLOPT_URL, $url);
// howmany parameter to post
curl_setopt($ch, CURLOPT_POST, 1);
// parameters
curl_setopt($ch, CURLOPT_POSTFIELDS, "someParameter=someValue");
$result = curl_exec ($ch);
curl_close ($ch);
print $result;
?>
或者使用fsockopen()
连接到服务器,并fwrite
发送原始HTTP POST请求。
谢谢。这很完美。我最终实现了这一点,它效果很好。 – Spob 2010-10-01 15:57:40
谢谢大家的回答。他们都是现场。我以为我会在最后帮助其他人的情况下取消我所做的。
问题的确是我没有安装http PECL扩展。不幸的是,我在Windows上,没有扩展这个扩展,我不想在这个盒子上安装微软工具来编译源代码。所以,我去了上面列出的建议,并使用curl来实现它。
我正在处理的脚本是使用在http://phpjack.com/content/pivotal-tracker-and-subversion处找到的优秀php脚本将svn集成到http://www.pivotaltracker.com。我修改了脚本如下(万一别人是在一个类似点):
$request = new HttpRequest('http://www.pivotaltracker.com/services/v3/source_commits', HttpRequest::METH_POST);
$headers = array(
'X-TrackerToken' => $token,
'Content-type' => 'application/xml'
);
$request->setHeaders($headers);
$request->setBody("<source_commit><message>$message</message><author>$author</author><commit_id>$rev</commit_id></source_commit>");
$request->send();
再次
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml","X-TrackerToken: $token"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close ($ch);
print $result;
感谢成为
所有优秀的,及时的提醒。
在前面加一个'error_reporting(E_ALL);'看看会发生什么。 – 2010-09-30 18:13:07
如果你设置了'error_reporting(E_ALL); ini_set('display_errors','1');'在开始的时候? – Tomalak 2010-09-30 18:14:12