我正在尝试解析一个 xml 文件并按成员的 ID 显示成员,并带有指向其个人资料的链接:
$xml=simplexml_load_file("http://steamcommunity.com/gid/103582791433452366/memberslistxml/?xml=1");
foreach ($xml->members->children() as $data)
{
echo '<a href="http://steamcommunity.com/profiles/'.$data.'">'.$data.'</a>'."<br>";
}
效果很好。
但是当我尝试从 json 文件(一个成员一个文件(显示每个成员的头像时,我在 dreamweaver 上收到错误"无法执行请求的操作,因为提供的句柄未处于正确的状态。
这是代码:
$xml=simplexml_load_file("http://steamcommunity.com/gid/103582791433452366/memberslistxml/?xml=1");
foreach ($xml->members->children() as $data)
{
$player=file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=MY_APY_KEY&steamids=$data");
$data1=json_decode($player);
echo '<a href="http://steamcommunity.com/profiles/'.$data.'"><img src="'.$data1->response->players[0]->avatar.'">'.$data.'</a>'."<br>";
}
但是例如,如果我在foreach之前放置$player和$data 1,然后我用唯一的steamID(例如76561197960435530(替换$data,如下所示:
$xml=simplexml_load_file("http://steamcommunity.com/gid/103582791433452366/memberslistxml/?xml=1");
$player=file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=MY_API_Key&steamids=76561197960435530");
$data1=json_decode($player);
foreach ($xml->members->children() as $data)
{
echo '<a href="http://steamcommunity.com/profiles/'.$data.'"><img src="'.$data1->response->players[0]->avatar.'">'.$data.'</a>'."<br>";
}
它将通过成员的ID显示成员,并带有指向其个人资料的链接,并将在每个成员旁边显示此steamid(76561197960435530(的头像。我想做的是在每个成员的ID旁边显示他们的头像,而不是76561197960435530的头像。
我也试图只输入这段代码:
$xml=simplexml_load_file("http://steamcommunity.com/gid/103582791433452366/memberslistxml/?xml=1");
foreach ($xml->members->children() as $data)
{
$player=file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=my_api_key&steamids=$data");
$data1=json_decode($player);
var_dump($data1);
}
它非常长,几分钟,但在 dreamweaver 上工作,它显示每个 json 文件的结构化信息。但是当我在 Firefox 上加载页面时,它可能不起作用,因为它加载时间太长。
您没有授权,或者您的 API 输入不正确:
<?php
$xml=simplexml_load_file("http://steamcommunity.com/gid/103582791433452366/memberslistxml/?xml=1");
foreach ($xml->members->children() as $data)
{
$player=file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=MY_APY_KEY&steamids=$data");
$data1=json_decode($player);
var_dump($data1);
}
?>
data1
结果 :
PHP Warning:
file_get_contents(http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/? key=MY_APY_KEY&steamids=76561198066695135):
failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized
in /home/marin/a.php on line 8
因此,您收到返回的错误 401,这意味着您未使用用户名和密码在 HTTP 服务器上获得授权,或者未为 STEAM 帐户设置授权的 API 密钥。
作者说:
但是当我在火狐上加载页面时,它可能不起作用,因为它是 加载时间太长。
在Firefox上打开"查看源",然后上传文件(不在源视图中重新加载(,然后刷新。你会看到一点点快一点。您需要知道XML文件的结构是什么。
请注意,您无法更改接收到远程数据的数据。
我使用类似于以下内容的代码
$playersStr = "";
$players = array();
// Build your $playersStr as a comma seperated string here
// Get players' information from Valve
$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$_STEAMAPI&steamids=$playersStr";
$json_object= file_get_contents($url);
$json_decoded = json_decode($json_object);
// Complete our player array with additional details from the API
foreach ($json_decoded->response->players as $player)
{
$players[$player->steamid]['steamid'] = $player->steamid;
$players[$player->steamid]['personaname'] = $player->personaname;
$players[$player->steamid]['profileurl'] = $player->profileurl;
$players[$player->steamid]['avatar'] = $player->avatar;
$players[$player->steamid]['avatarmedium'] = $player->avatarmedium;
$players[$player->steamid]['avatarfull'] = $player->avatarfull;
}
需要注意的几点:
$playersStr
是一个逗号分隔的字符串,在我的例子中,它是从数据库查询构建的。您可以根据需要构建它,只要它最终成为一串逗号分隔的配置文件 ID。$_STEAMAPI
是您的 Steam API 密钥。- 在此结束时,您将拥有一个
$players
数组,您可以使用该数组并循环访问要查找的字段。在这种情况下,它甚至与所有三个头像大小一样。