如何在PHP中执行HTTP(POST)请求而无需任何配置

时间:2016-12-14 02:33:01

标签: php http curl request httprequest

我正在创建一个我希望任何人都可以使用的PHP包。 我在几年内没有做过任何PHP开发,而且我对pear和pecl不熟悉。

我的问题的第一部分与Pecl和Pear有关:
在我看来,Pear和pecl正在更新我的计算机,而不是对我的代码库做任何事情,这使我假设我用它们做的任何事情也需要被想要使用我的包的人复制。这是对的吗?

我的问题的第二部分是具体的,我只是想做一个简单的HTTP(POST)请求,理想情况下我想在没有使用我的包的人所需的任何配置的情况下这样做。

这些是我正在考虑的选项:

  • HTTPRequest似乎是一个完美的选择,但它说“致命错误:未捕获错误:类'HttpRequest'未找到”当我尝试使用它时框,当我按these instructions进行安装时,我得到了“ autoheader:错误:在configure.in中找不到AC_CONFIG_HEADERS 错误:“phpize”失败“ - 我不想为了做一个简单的HTTP请求而调试那样疯狂的东西,也不希望有人使用我的包来解决这样的问题。

  • 我已经使用了HTTP_Request2 via a pear install并且它对我有用,但我的代码库中根本没有添加任何内容,因此可能会为尝试使用我的软件包的人破解,除非他们遵循相同的安装步骤

  • 我知道我可以使用CURL但是对于这样一个简单的操作,我的语法似乎超过顶部(我希望我的代码非常容易阅读)

  • 我想我可以使用file_get_contents() ..这是最好的选择吗? 也许我会将我的问题的第二部分说成:

是否有一种方法被认为是(1)在PHP中执行HTTP请求以及(2)创建一个能够被任何人轻松使用的包的最佳实践?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的要求。虽然在第一次学习它时可能会令人生畏,但我更喜欢在大多数时间使用cURL请求,除非我需要做的就是查询没有标题的页面。一旦你习惯了我认为的语法和各种选项,它就会变得非常易读。当我需要做的就是查询没有标题的页面时,我通常会使用file_get_contents,因为这样看起来更好,更简单。我也认为大多数PHP开发人员都同意我的观点。我建议使用cURL请求,因为当您需要设置标题时,它们非常有条理,而且比使用file_get_contents更加受欢迎。

修改
在学习如何在PHP中执行cURL时,文档页面上的选项列表是您的朋友! http://php.net/manual/en/function.curl-setopt.php

这是一个使用PHP的简单POST请求的示例,它将返回响应文本:

$data = array("arg1" => "val1", "arg2" => true); // POST data included in your query
$ch = curl_init("http://example.com"); // Set url to query 

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // Send via POST                                         
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // Set POST data                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return response text   
curl_setopt($ch, CURLOPT_HEADER, "Content-Type: application/x-www-form-urlencoded"); // send POST data as form data

$response = curl_exec($ch);
curl_close($ch);