function do_post_request($url, $data, $optional_headers = null) {
$request = new HttpRequest($url, HttpRequest::METH_POST);
$request->setBody($data);
$response = $request->send();
return $response->getBody();
}
这段代码似乎没有用,似乎崩溃了我的脚本。我不知道是不是因为我没有php_http模块,但我可以使用它吗?
例如curl?我已经尝试过卷曲,但我对此并不了解,而且卷曲后我从服务器返回了一个“错误的请求”,我试图连接到400状态。
一切都会好的
由于
汤姆
编辑:
function do_post_request($url, $data, $optional_headers = null) {
$request = new HttpRequest($url, HttpRequest::METH_POST);
$request->setBody($data);
$response = $request->send();
return $response->getBody();
}
echo "before";
$response = do_post_request($url, $data);
echo "After";
这样做会使“之前”出现在页面上。但没有“后”。
管理完错误报告后,我得到了这个:
Fatal error: Class 'HttpRequest' not found in /home/sites/ollysmithwineapp.com/public_html/mellowpages/geocode.php on line 25
所以我需要另一种方法来处理HTTP请求。
答案 0 :(得分:1)
是否正确安装并配置了HTTP扩展?
安装/配置
<强>安装强>
此»PECL扩展名未捆绑 用PHP。
安装此PECL的信息 扩展可以在手册中找到 标题为PECL的安装的章节 扩展。附加信息 例如新版本,下载, 源文件,维护者信息, 和CHANGELOG,可以在这里: » http://pecl.php.net/package/pecl_http
也许cURl是要走的路
答案 1 :(得分:1)
this question被盗。您可以直接在$data
的位置插入CURLOPT_POSTFIELDS
代替查询字符串。
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
// further processing ....
if ($server_output == "OK") { ... } else { ... }
?>
答案 2 :(得分:1)
我还使用stream_context_create()找到了一个解决方案。它使您可以更好地控制在POST中发送的内容。
这是一篇博客文章,解释了如何做到这一点。它可以让您轻松指定确切的标题和正文。
http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/
答案 3 :(得分:0)
没有HttpRequest::setBody()
方法。您应该使用addPostFields
函数,使用关联数组:
function do_post_request($url, $data, $optional_headers = null) {
$request = new HttpRequest($url, HttpRequest::METH_POST);
$request->setPostFields($data);
$response = $request->send();
return $response->getBody();
}
$responseBody = do_post_request('http://www.example.com',array('examplefield'=>'exampledata'));