2013-09-02 4 views
11

Voglio solo fare un httprequest con i parametri del post. Ho usato questo codiceHttpRequest non trovato in php

$r = new HttpRequest($url, HttpRequest::METH_POST); 
$r->send(); 

ma ottengo questo errore:

ErrorException [ Fatal Error ]: Class 'HttpRequest' not

ho aggiunto extension=php_http.dll questo al mio php.ini, ma il problema esiste ancora. Ho scaricato il file php_http.dll e l'ho inserito nella cartella ext di php ma era già esistente quindi ho sostituito e ho ancora lo stesso problema.

Qualsiasi aiuto sarebbe apprezzato

+0

ciao, hai verificato che la DLL esista nella cartella estensione di php? –

risposta

6

Se si utilizza PHP 5.4 o superiore, non sembra essere un file php_http.dll da includere nella libreria estensioni (A meno che qualcuno può trovare uno che mi mancava ??).

L'unico che è stato possibile trovare ha generato errori all'avvio del server Apache dopo l'aggiornamento del file di configurazione php.ini per includere l'estensione.

Non temere, tuttavia, poiché sembra esserci un progetto GitHub che fornisce le funzionalità all'interno di una classe piuttosto che un'estensione. Click here to find the required class.

Se salvi questo corso nel tuo progetto e chiami così;

include_once('HttpRequest.php'); //where HttpRequest.php is the saved file 
$url= 'http://www.google.com/'; 
$r = new HttpRequest($url, "POST"); 
var_dump($r->send()); 

In mancanza di ciò, sembrerebbe che l'unica altra opzione praticabile sarebbe quella di compilare il te dll dalla sorgente here :(

In caso contrario, un'altra opzione sarebbe quella di utilizzare cURL invece. CURL fornisce . maggior parte (se non tutti) della funzionalità del httpRequest

Un semplice esempio di questo sarebbe;

$url = "http://www.google.com/";   
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 
$head = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
var_dump($head); 

Mor dettagli e ed esempi migliori possono essere trovati sul sito web php Here

Spero che questo aiuta a rispondere alla tua domanda, piuttosto che lasciare con più ...

+1

'php_http.dll' per PHP 5.4 è disponibile all'indirizzo https://github.com/stealth35/stealth35.github.it/download – user555

+0

Ah, dopo tutto ero diventato cieco? Grazie per l'aiuto con l'individuazione del php_http.dll. Sapete se la dll menzionata viene eseguita correttamente dopo aver incluso in 'php.ini' e riavviato il servizio Apache? – guyver4mk

+0

Funziona bene con la mia installazione di PHP 5.4.7. 'phpinfo()' segnala che l'estensione 'http' versione' 1.7.4' è abilitata e funzionante. – user555

4

È necessario assicurarsi di avere un php_http.dll che corrisponde al tuo Versione PHP. È possibile fare <?php phpinfo(); per verificare con le estensioni vengono caricate (cercare "http", elencherà la versione e le classi disponibili).

Se l'estensione non viene visualizzata in phpinfo(), è necessario controllare i registri per sapere da dove proviene il problema o eseguire il binario PHP direttamente dal prompt dei comandi - php -i. Se si verifica un errore durante il caricamento di una libreria dinamica, verrà visualizzato in una finestra di dialogo. Nota che PHP continuerà a funzionare anche se non è stato possibile caricare un'estensione.

3

è possibile reinstallare il pacchetto

$ pecl install -f pecl_http-1.7.6 

o accedere ai dati utilizzando ricciolo come this snippet