如何调用d.multicall2

问题描述

我正在尝试使用PHP xml-rpc调用API。这是我要检索的API:https://rtorrent-docs.readthedocs.io/en/latest/cmd-ref.html#term-d-multicall2

到目前为止,我进行了以下操作:

<?PHP
$username "test";
$password = "test";
function do_call($username,$password,$request) {

    $url = "https://$username:$password@example.com:32491/RPC2";
    $header[] = "Content-type: text/xml";
    $header[] = "Content-length: ".strlen($request);

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_TIMEOUT,CURLOPT_HTTPHEADER,$header);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$request);

    $data = curl_exec($ch);
    if (curl_errno($ch)) {
        print curl_error($ch);
    } else {
        curl_close($ch);
        return $data;
    }
}
//$request = xmlrpc_encode_request("download_list",array()); //Give torrents hash
$request = xmlrpc_encode_request("d.multicall2",array("main","d.name="));

$response = do_call($username,$request);
var_dump($response);

结果:

string(310) " faultCode -501 faultString Unsupported target type found. "

使用xmlrpc进行示例调用

rtxmlrpc --repr d.multicall2 '' tagged d.hash= d.name= d.custom=category

我不明白为什么会收到此错误

rTorrent版本:0.9.7 / 0.13.7

解决方法

issue 227中,罗刹莎说:

所有命令都应将目标作为第一个参数, 在这种情况下为空字符串。

因此,您需要这样调用才能看到第一个空字符串:$request = xmlrpc_encode_request("d.multicall2",array("","main","d.name="));