Ho una funzione di classe per interfacciare con l'API RESTful per Last.FM - il suo scopo è quello di catturare le tracce più recenti per il mio utente. Eccolo:Errore PHP CURL: "Risposta vuota dal server"
private static $base_url = 'http://ws.audioscrobbler.com/2.0/';
public static function getTopTracks($options = array())
{
$options = array_merge(array(
'user' => 'bachya',
'period' => NULL,
'api_key' => 'xxxxx...', // obfuscated, obviously
), $options);
$options['method'] = 'user.getTopTracks';
// Initialize cURL request and set parameters
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => self::$base_url,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $options,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 30,
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
));
$results = curl_exec($ch);
return $results;
}
Questo restituisce "Empty reply from server"
. So che alcuni hanno suggerito che questo errore provenga da un difetto nell'infrastruttura di rete; Non credo che questo sia vero nel mio caso. Se eseguo una richiesta CURL attraverso la riga di comando, ottengo i miei dati; il servizio Last.FM è attivo e accessibile.
Prima di andare a quelle persone e vedere se qualcosa è cambiato, volevo controllare con voi gente e vedere se c'è qualche problema nel mio codice che causerebbe questo.
Grazie!
RISPOSTA: @Jan Kuboschek mi ha aiutato a imbattersi in quello che (forse) sta succedendo qui. Dando CURLOPT_POSTFIELDS
a un array associativo, viene specificato un particolare tipo di contenuto che potrebbe non funzionare con determinati servizi RESTful. Una soluzione più intelligente consiste nel creare manualmente una versione con codifica URL di tali dati e passarla come CURLOPT_POSTFIELDS
.
Per ulteriori informazioni, check out: http://www.brandonchecketts.com/archives/array-versus-string-in-curlopt_postfields
Sfortunatamente, non è questo il problema: ho aggiornato il mio post originale per mostrare l'URL ($ base_url) che utilizzo. Grazie comunque. : - \ – ABach
Aggiornato la mia risposta. Fammi sapere se questo ancora non funziona. Non ho potuto testare ulteriormente dal momento che il server mi ha detto che avevo bisogno di una chiave API valida. –
Ok, l'ho provato - sembra che si blocchi ("funziona") un po 'più a lungo. I var eseguono il dump dei risultati di curl_exec e restituiscono 'false' in cambio ... Preferisco non pubblicare la mia chiave API, ma sono abbastanza facili da ottenere. – ABach