file_get_contents() 在身份验证时返回一个空字符串,否则很好


file_get_contents() returns an empty string when authenticating, otherwise fine

所以,我是使用API和PHP的新手,所以请耐心等待。 我正在尝试点击 API 以通过 GET 参数对站点进行身份验证(如 API 文档中的建议)。 我正在尝试使用 file_get_contents() 返回它返回的身份验证令牌。 重定向到 URL 会以 XML 格式输出令牌。

但是,当我执行以下操作时,它会返回一个空字符串。 如何返回完整的 XML 输出?

$token = file_get_contents('http://example.com/api.asp?cmd=logon&email=xxx@something.com&password=s0mep@SSword');
var_dump($token);

我得到以下输出:

string(116) ""

对我做错了什么有什么想法吗?

尝试执行以下操作:

$token = str_replace("<", "&lt;", $token);
$token = str_replace(">", "&gt;", $token);
vd($token);

发生这种情况是因为您的浏览器将您正在读取的 XML 解释为 HTML,并将 XML 读取为标记。(你可以说字符串不为空,因为vd,我假设它是var_dump的别名,告诉你字符串的长度是116。将<>替换为其有效的 HTML 实体应该可以解决这个问题。

假设 API 返回 XML,则可以使用 PHP 中的 SimpleXML 直接解析文件:

 <?php
 $token = simplexml_load_file('http://example.com/api.asp?cmd=logon&email=xxx@something.com&password=s0mep@SSword');
 vd($token);
 ?>