Codeigniter中的PHP请求库

时间:2014-06-24 01:08:55

标签: php codeigniter

我正在使用PHP的请求库(http://requests.ryanmccue.info/)。

我安装了composer并在composer.json中添加了以下Json配置:

{
   "require": {
      "rmccue/requests": ">=1.0"
   },
     "autoload": {
     "psr-0":{"Requests" : "library/"}
     }
}

所以在我的控制器中,我正试图通过库运行请求,我得到:

 public function index()
        {
Requests::register_autoloader();
$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);
// int(200)

var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"

var_dump($request->body);   

}

:第34行的../application/controllers/test.php中找不到“请求”类

5 个答案:

答案 0 :(得分:20)

使用 Codeigniter 请求PHP 有一种简单的方法。

您可以按照以下几个简单的步骤进行操作。

步骤1

解压缩最新的PHP zip请求,并将库目录的内容复制到{codeigniter_directory}/application/third_party/Request-{version},例如,您有PHP 1.6.0的请求,并且您的CI项目位于/usr/sites/www/myciproject,然后将文件复制到{ {1}}。

步骤2

使用此内容

/usr/sites/www/myciproject/application/third_party/Requests-1.6.0中创建文件PHPRequests.php
{codeigniter_directory}/application/libraries

步骤3

在您的控制器中,您可以通过加载我们在上一步中创建的PHPRequests库来使用请求。

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');  

require_once APPPATH."/third_party/Requests-1.6.0/Requests.php";
class PHPRequests {
    public function __construct() {
       Requests::register_autoloader();
    }
}

喜欢这个测试功能

$this->load->library('PHPRequests');

希望这会有所帮助。

答案 1 :(得分:4)

您不需要将autoload块添加到composer.json,包括require块中的库将使用程序包提供的自动加载配置。

您通常使用自动加载块来配置通过编辑器包加载的代码。

你还需要require作曲家自动加载文件,如果你还没有

require 'vendor/autoload.php';

某个地方将在需要编写器库的代码之前运行(通常是在“bootstrap”进程中)

并且,您需要运行composer install来实际安装已配置的依赖项。

答案 2 :(得分:0)

在我通过几个http机制(我自己的一些:)之后,HTTPFUL是最好的库。)我发现这个非常有用。 http://phphttpclient.com/

它包括

Readable HTTP Method Support (GET, PUT, POST, DELETE, HEAD, and OPTIONS)
Custom Headers
Automatic "Smart" Parsing
Automatic Payload Serialization
Basic Auth
Client Side Certificate Auth
Request "Templates"

答案 3 :(得分:0)

我将在Gopkumar Gopalan的一个写得很好的答案中添加一些观点,使其在codeigniter 3.x中运行。

第1步

在composer.json

中添加Requests库

第2步

安装依赖项composer install

第3步

使用此内容在PHPRequests.php中创建文件{codeigniter_directory}/application/libraries(请注意,请求库的路径发生了变化)

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');  

require_once FCPATH."vendor/rmccue/requests/library/Requests.php";
class PHPRequests {
    public function __construct() {
       Requests::register_autoloader();
    }
}

第4步

在您的控制器中,您可以通过加载我们在上一步中创建的PHPRequests库来使用请求。

$this->load->library('PHPRequests');

喜欢这个测试功能

public function test()
{
    $this->load->library('PHPRequests');
    $response = Requests::get('https://github.com/timeline.json');
    var_dump($response->body);
}

希望它有助于某人

答案 4 :(得分:0)

询问者没有说明他们使用的是哪个版本的Codeigniter,但是对于3.x,我认为公认的答案不是正确的方法。 CI自动加载文档:https://www.codeigniter.com/user_guide/general/autoloader.html

在3.x中,首先要在application / config / config.php文件中打开Composer自动加载:

$config['composer_autoload'] = true;

请注意config.php中的此注释,这可能非常重要。详情请见下文。

// Enabling this setting will tell CodeIgniter to look for a Composer
// package auto-loader script in application/vendor/autoload.php.

然后,如果您的composer.json文件中包含此文件:

"require": {
    "rmccue/requests": ">=1.0"

},
"autoload": {
        "psr-0": {"Requests": "library/"}
}

您的文件中可能还有很多东西,为了简洁起见,我对其进行了编辑

运行composer更新后,您应该最终通过Composer自动加载来处理请求,因此这不需要专门加载vendor / autoload.php就可以了。

Requests::register_autoloader();

注意:

我在服务器上安装了多个Codigniter,并且按照说明进行操作。在我的情况下,供应商目录和composer.json与应用程序文件夹安装在同一级别,不在应用程序文件夹中,因此启用Composer自动加载无效。如果您遇到这种情况,则有两种选择:

  1. 在config.php中,而不是设置$ config ['composer_autoload'] = 正确,您可以将其设置为供应商文件所在的路径: $ config ['composer_autoload'] ='/path/to/vendor/autoload.php'
  2. 将composer.json文件移动到应用程序文件夹,然后运行composer update。

无论如何,希望这对任何可能陷入困境的人有所帮助-我花了2个小时努力解决此问题,然后才终于意识到我的供应商目录不在CI寻求的地方。