2014-06-24 18 views
7

Ich verwende die Anfragen Bibliothek (http://requests.ryanmccue.info/) für PHP.PHP Requests Bibliothek in Codeigniter

Ich installierte Komponisten und addierte die folgende Json Konfiguration in composer.json:

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

Also in meinem Controller versuche ich eine Anforderung durch die Bibliothek zu laufen und ich:

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); 

} 

: Klasse 'Anfragen' nicht gefunden in ../application/controllers/test.php on line 34

+0

hilft, wo man composer.json gelegt hat? – ShaMoh

Antwort

4

Sie sollten nicht den autoload Block hinzufügen müssen composer.json, einschließlich der Bibliothek im require Block wird die Autoload-Konfiguration des Pakets verwenden.

Normalerweise verwenden Sie einen Autoload-Block, um das Laden von Code zu konfigurieren, der nicht über ein Composer-Paket installiert ist.

Sie müssen auch den Komponisten automatisch geladen Datei require, wenn Sie mit dem

require 'vendor/autoload.php'; 

irgendwo nicht bereits haben, die vor dem Code ausgeführt werden, dass der Komponist Bibliotheken benötigt (in der Regel ist es in der „Bootstrap“ -Prozess)

Und Sie müssen composer install ausführen, um die konfigurierten Abhängigkeiten tatsächlich zu installieren.

+0

Sie sind genau richtig mit dem 'require 'Hersteller/autoload.php';' – Edward

20

Es gibt eine einfache Möglichkeit zu verwenden Anfragen für PHP mit Codeigniter.

Sie können diese wenigen einfachen Schritte folgen.

Step - 1

Dekomprimieren Aktuelle Anfragen für PHP zip und kopieren Sie den Inhalt des Bibliotheksverzeichnis zu {codeigniter_directory}/application/third_party/Request-{version} zum Beispiel Sie haben Anfragen für PHP 1.6.0 und CI-Projekt ist in /usr/sites/www/myciproject dann die Dateien kopieren zu /usr/sites/www/myciproject/application/third_party/Requests-1.6.0.

Step - 2

Erstellen Sie eine Datei PHPRequests.php in {codeigniter_directory}/application/libraries mit diesem Inhalt

<?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(); 
    } 
} 

Step - 3

In Ihrem Controller Sie Anfragen durch das Laden PHPRequests Bibliothek können wir im vorherigen Schritt erstellt.

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

Wie dieser Testfunktion

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

Hope this helfen.

+3

Danke für Schritt für Schritt Hilfe. Es funktioniert :) – jagad89

+1

Sehr nützlich. Vielen Dank! –

+1

Danke für die detaillierte Antwort. die gewählte Antwort hat mir nicht viel nützen können. –

0

HTTPFUL ist die beste Bibliothek, nachdem ich mehrere http-Mechanismen (einige meiner eigenen :) durchgemacht habe, fand ich, dass dieser sehr nützlich ist. http://phphttpclient.com/

und umfasst

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" 
0

Ich werde nur ein paar Punkte auf eine gut geschriebene Antwort von Gopkumar Gopalan hinzufügen, um es in codeigniter 3.x. funktioniert

Schritt 1

Fügen Sie die Anfragen Bibliothek in Ihrer composer.json

Schritt 2

Abhängigkeiten installieren composer install

Schritt 3

Erstellen

eine Datei PHPRequests.php in {codeigniter_directory}/application/libraries mit diesem Inhalt (Hinweis gibt es eine Änderung in dem Pfad der Anfragen Bibliothek)

<?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(); 
    } 
} 

Schritt 4

In Ihrem Controller Sie Anfragen durch das Laden PHPRequests verwenden können Bibliothek, die wir im vorherigen Schritt erstellt haben.

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

Wie dieser Testfunktion

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

Hoffe, dass es jemand