OpenSubtitles API 401未经授权如何修复?

时间:2018-02-06 02:08:07

标签: php xml-rpc subtitle

我试图从OpenSubtitles(http://trac.opensubtitles.org/projects/opensubtitles/wiki/XMLRPC)中获取字幕,如下所示:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
//Opensubtitles listing
function data($request){
    $context = stream_context_create(array('http' => array(
    'method' => "POST",
    'header' => "Content-Type: text/xml\r\nUser-Agent: PHPRPC/1.0\r\n",
    'content' => $request
    )));

    $server = 'http://api.opensubtitles.org/xml-rpc'; // api url
    $file = file_get_contents($server, false, $context);

    $response = xmlrpc_decode($file);
    return $response;
}

//Get token
$request = xmlrpc_encode_request("LogIn", array('', '', 'eng', 'TemporaryUserAgent'));
$token = data($request)['token'];
//Get listing
$request = xmlrpc_encode_request("SearchSubtitles", array(
    'imdb' => '0462499',
    'sublanguageid' => 'eng',
    'season' => '',
    'episode' => '',
    'token' => $token
));
$response = data($request);
var_dump($response);
?>

然而,我一直得到401 Unauthorized。有谁知道如何解决这个问题?我知道这不是API的问题,因为我能够很好地检索令牌。

2 个答案:

答案 0 :(得分:0)

尝试使用您的用户名/密码而不是空字符串。

并在Header中的TemporaryUserAgent中更改UserAgent,如下所示 http://trac.opensubtitles.org/projects/opensubtitles/wiki/DevReadFirst

答案 1 :(得分:0)

第二个请求应采用以下格式: -

$request = xmlrpc_encode_request("SearchSubtitles", array($token, array(array('sublanguageid' => 'eng', 'imdbid' => 'your_imdbid'))));

希望这有帮助。