2012-08-14 25 views
0
輸出

我試圖做一個POST請求此網址:我無法張貼JSON字符串的URL在JSON

http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo 

這個JSON字符串

{"usn":12434525} 

獲得與此類似的輸出;

{"d":"{\"usn\":12434525,\"nick\":\"Guiness\",\"lev\":39,\"playCnt\":3734,\"winCnt\":3210,\"loseCnt\":239,\"enemyKillCnt\":129734,\"deathCnt\":5140,\"exp\":1072522,\"headshotKillCnt\":120339,\"friendKillCnt\":5,\"escapeCnt\":45,\"regDate\":\"2011\",\"lastPlayDate\":\"2012-08-12\",\"guildid\":217089,\"clanName\":\"Guiness™\",\"memberType\":null,\"gcClanID\":55000,\"hs5p\":202,\"fk1p\":0,\"k10p\":211,\"d20p\":2,\"esc4p\":0,\"sv3p\":676,\"matchLosses\":98,\"matchWins\":1894}"} 

因爲我爲遊戲帳戶(如統計數據)製作datascraper並且每個頁面根據帳戶ID不同。

我嘗試這樣做:

<?php 
$usn=$_GET["accountUSN"]; 
$url='http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo'; 

$options = array(
    'http' => array(
     'method' => "POST", 
     'content' => http_build_query(
      array(
       'usn'=>$usn 
      ) 
     ) 
    ) 
); 

$context = stream_context_create($options); 
$result = file_get_contents($url,NULL,$context); 
var_dump($result); 
?> 

有人建議這一點,但它總是返回

bool(false) 

我只是想知道如何正確地做到這一點,如果它讓你感覺更好我不真的想要任何完整的代碼。此外,我試圖避免cURL,我想要一個本地選項。

此外,有人想幫我在這裏: https://stackoverflow.com/questions/11920064/php-simple-html-dom-parser-not-giving-me-text-for-a-td 但我不小心刪除了帖子,是一個新的用戶。我怎樣才能取消這個?

編輯:

<?php 

$usn=$_GET['accountUSN']; 
$url='http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo'; 

$options=array('http'=>array('method'=>'POST','content'=>'content' => '{\'usn\':$usn}')); 

$context=stream_context_create($options); 
$result=file_get_contents($url,NULL,$context); 
var_dump($result); 
?> 

服務器錯誤。

+0

你正在發送內容作爲查詢字符串不是一個JSON字符串 – Musa 2012-08-14 00:40:31

+0

你能解釋一下嗎?我不明白:(我查詢帳號,因爲它看起來像這樣:http://clan.z8games.com/charstat_cf.aspx?usn = 12434525但頁面加載後,ajax調用鏈接我如果你想要json,你可以使用''content'=>「{\」usn \「:$ usn}」' – lolwut123 2012-08-14 00:42:36

+0

'http_build_query'會給你'usn = 12434525'嘗試了你說的話,我得到一個服務器錯誤 – Musa 2012-08-14 00:46:10

回答

0

我用這種方法是打開文件,然後從文件指針中獲取流內容。

$context = stream_context_create($options); 
$fp = fopen($url, 'rb', false, $context); 
if (!$fp) { 
    die('Failed to open stream'); 
} 
$result = stream_get_contents($fp); 
var_dump($result); 
0

可能您可以使用螢火蟲,請參閱網絡標籤,比較您以編程方式發送的內容和瀏覽器發送的內容。 確保你發送了它想要的東西。