【问题标题】:SHOUTcast XML get with phpSHOUTcast XML 用 php 获取
【发布时间】:2012-02-07 05:50:17
【问题描述】:

我有直播管理员,我需要从中读取 xml,它看起来像这样

http://SHOUTCAST-IP:PORT/admin.cgi

我需要登录并从http://SHOUTCAST-IP:PORT/admin.cgi?mode=viewxml 获取 XML 数据并使用 php 完成,我已经制作了这个脚本

$fp = fsockopen($server, $port, $errno, $errstr, 30);
      fputs($fp, "GET /admin.cgi?pass=".$password."&mode=viewxml HTTP/1.0\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)\r\n\r\n"); //
      while (!feof($fp)) {
          $content = fgets($fp);
}

但它不起作用,它显示Unauthorised。我该如何解决?

【问题讨论】:

  • 你的标题有点乱。你为什么不改用 cURL 呢?不要重新发明轮子……不需要直接为此使用套接字。

标签: php shoutcast


【解决方案1】:

您确定可以使用标准 $_GET 变量在此处提供usernamepassword 吗?似乎很糟糕的做法!?

我会使用 cURL 来实现这一点,它又快又简单!

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://SHOUTCAST-IP:PORT/admin.cgi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "user:pwd");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
$output = curl_exec($ch);
curl_close($ch);

【讨论】:

  • 您当然可以使用 SHOUTcast 将密码指定为 URL 参数。它有什么不好的做法?对于这种情况,它是一种便利功能。无论如何,基本身份验证也可以正常工作。
【解决方案2】:

这个怎么样?

//*********** YOUR FM ***********//
// Begin Configuration
$scdef  =       "YOUR FM"; 
                                        // ABOVE: Default station name to display when server or stream is down
$scip   =       "127.0.0.1";        // ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$scport =       "5977";              // port of shoutcast server
$scpass =       "mysecretpassword";              // password to shoutcast server

// End Configuration
//*********** YOUR FM ***********//

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
 if(!$scfp) {
  $scsuccs=1;
echo''.$scdef.' is Offline';
 }
if($scsuccs!=1){
 fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
 while(!feof($scfp)) {
  $page .= fgets($scfp, 1000);
 }

 // REST OF YOUR CODE BELOW HERE!

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 2013-04-30
    • 2012-03-03
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多