file_get_contents() 验证时返回空字符串,否则很好

发布于 2024-11-07 00:50:54 字数 568 浏览 5 评论 0原文

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

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

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

我得到以下输出:

string(116) ""

关于我做错了什么有什么想法吗?

So, I'm new to working with API's and PHP, so bear with me. I'm trying to hit an API to authenticate into the site via GET parameters (as suggested in the API documentation). I'm trying to use file_get_contents() to return the authentication token it returns. A redirect to the URL outputs the token in XML format.

However, when I do the following, it returns an empty string. How can I return the full XML output?

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

I get the following output:

string(116) ""

Any ideas about what I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白鸥掠海 2024-11-14 00:50:54

尝试这样做:

$token = str_replace("<", "<", $token);
$token = str_replace(">", ">", $token);

vd($token);

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

Try doing:

$token = str_replace("<", "<", $token);
$token = str_replace(">", ">", $token);

vd($token);

This is occurring because your browser is interpreting the XML you're reading as HTML and reading the XML as tags. (You can tell the string is not empty because vd, which I'm assuming is an alias for var_dump tells you the string's length is 116.) Replacing the <'s and >'s with their valid HTML entities should resolve that.

怎会甘心 2024-11-14 00:50:54

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

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

Assumning the API is returning XML, you can use SimpleXML in PHP to directly parse the file:

 <?php
 $token = simplexml_load_file('http://example.com/api.asp?cmd=logon&[email protected]&password=s0mep@SSword');
 vd($token);
 ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文