2015-12-14 18 views
5

Ho un portale di notizie che visualizza articoli di feed RSS. Si leggono circa 50 fonti e funziona molto bene.RSS-Feed restituisce una stringa vuota

Solo con una fonte ottengo sempre una stringa vuota. L'RSS Validator di W3C può leggere il feed RSS. Anche il mio programma Vienna riceve dati.

Cosa posso fare?

Ecco il mio codice semplice:

$link = 'http://blog.bosch-si.com/feed/'; 

$response = file_get_contents($link); 

if($response !== false) { 
    var_dump($response); 
} else { 
    echo 'Error '; 
} 
+1

Dare un'occhiata a [come eseguire il debug di file_get_contents()] (http://stackoverflow.com/questions/6724467/why-doesnt-file-get-contents-work) – Naruto

+0

Ci sono errori nel registro? Assicurati che la registrazione degli errori sia abilitata. – Gordon

+2

u usare User-Agent, che/feed/script verifica per esso. – waza123

risposta

4

Il server al servizio che di alimentazione prevede un User Agent da impostare. A quanto pare non hai un User Agent set in your php.ini, né lo imposti nella chiamata a file_get_contents.

è possibile impostare l'User Agent per questa particolare richiesta tramite un stream context:

echo file_get_contents(
    'http://blog.bosch-si.com/feed/', 
    FALSE, 
    stream_context_create(
     array(
      'http' => array(
       'user_agent' => 'php'    
      ) 
     ) 
    ) 
); 

o globalmente per tutte le chiamate http:

ini_set('user_agent', 'php'); 
echo file_get_contents($link); 

Entrambi vi darà il risultato desiderato.

+0

più efficace :) risposta perfetta –

2

blog http://blog.bosch-si.com/feed/ necessaria una certa intestazione per recuperare i contenuti dal sito web, un migliore utilizzo ricciolo per la stessa.

Vedere sotto soluzione:

<?php 
$link = 'http://blog.bosch-si.com/feed/'; 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $link); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: blog.bosch-si.com', 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36')); 
$result = curl_exec($ch); 
if(! $result) 
{ 
    echo curl_error($ch); 

} 
curl_close($ch); 
echo $result; 
Problemi correlati