2015-08-27 55 views
0

我已經使用了2個多月,直到前幾天,當出現錯誤消息時工作得很好。 我使用蒸汽API來獲取玩家的一些信息。file_get_contents不能與外部網站一起工作

$url = "http://steamcommunity.com/id/CGaKeepoN/?xml=1";

頁不是空白的,它有一個XML文檔。所以我的第一個想法是,我的主機已經關閉了allow_url_fopen,但他們不(我問他們)。

我也使用error_reporting(E_ALL); ini_set('display_errors', 1);

審判,這就是我得到:

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "" on line 6 Notice: Trying to get property of non-object on line 7

現在我使用的是這樣的:$xml = simplexml_load_file(file_get_contents($url));

而且我會愛,因爲在安裝繼續使用它cURL現在不是一個選項。你知道一個更好的(或工作)的方式來完成這項工作嗎?或者如何解決這個錯誤?

我全碼:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
//$url = "http://steamcommunity.com/id/CGaKeepoN/?xml=1"; 
$url = "xml.txt"; 
ini_set('allow_url_fopen ','ON'); 
$xml = file_get_contents($url) or die ("file_get_contents failed"); 
$xml = simplexml_load_string($xml) or die ("simplexml_load_string failed"); 
$profilepic = $xml->avatarIcon; 
$pic = $xml->avatarFull; 
$steamID = $xml->steamID; 
$lastonline = $xml->stateMessage; 
echo $xml; 
echo $profilepic; 
echo $pic; 
echo $steamID; 
echo $lastonline; 

編輯:

如果我用它加載數據的內部URL,但是當我嘗試使用使用HTTP協議的任何URL剛剛啓動file_get_contents failed錯誤,即使該網址是我的網站之一。如果沒有其他解決方案,我願意使用cURL。我也想過如何創建一個加載數據並將其保存在服務器中的文件中的php腳本(然後每10分鐘運行一次cronjob),但無論如何它都會使用file_get_contents ...

+0

當的file_get_contents檢索資源,你應該使用simplexml_load_string其結果。你沒有傳入文件名,而是文字數據。 - 當然,只有當它被成功提取時。您需要調試file_get_contents的結果。 – mario

+0

我也嘗試過使用simplexml_load_string,就像我之前說過的,但我不斷收到相同的錯誤。問題在於file_get_contents沒有獲取數據。 – KeepoN

+1

嗯,我知道。問題是爲什麼它沒有。許多可行的原因,例如用戶代理阻塞。只是在瀏覽器中測試它並不能說明任何事情。使用'curl -V' /'wget -S'從命令行進行調試,然後使用PHP和該服務器中的get_headers()來查看是否禁止流式API輪詢。 – mario

回答

0

file_get_content返回一個字符串所以請使用simplexml_load_string。

此代碼適用於我,經過測試。

$url = "http://steamcommunity.com/id/CGaKeepoN/?xml=1"; 
$xml = simplexml_load_string(file_get_contents($url)); 
$profilepic = $xml->avatarIcon; 
$pic = $xml->avatarFull; 
$steamID = $xml->steamID; 
$lastonline = $xml->stateMessage; 
var_dump($url); 
var_dump($xml); //-> string(45) "http://steamcommunity.com/id/CGaKeepoN/?xml=1" bool(false) 
echo $xml; 
echo $profilepic; 
echo $pic; 
echo $steamID; 
echo $lastonline; 
+0

什麼是你得到什麼?因爲我沒有得到任何錯誤,但字符串不應該是空白的... – KeepoN