php-来自rtorrent的空xmlrpc响应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-来自rtorrent的空xmlrpc响应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4626字,纯文字阅读大概需要7分钟。
内容图文
![php-来自rtorrent的空xmlrpc响应](/upload/InfoBanner/zyjiaocheng/659/b0e9783b42104dfa9f0474c98082bf6a.jpg)
我想编写自己的rTorrent WebUI并使用xmlrpc进行第一步.但是不知何故,它实际上并没有起作用…
这是我为HTTP POST请求编写的功能:
function request($method, $args) {
$data = xmlrpc_encode_request($method, $args);
$ch = curl_init('http://#####/RPC2/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = xmlrpc_decode(curl_exec($ch));
curl_close($ch);
return $response;
}
现在获取种子列表…
$data['hash'] = request('download_list',null);
print_r($data);
Array
(
[hash] => Array
(
[0] => 0CF0C7F75D18281AE7C65309F6B798CEB149BCB8
[1] => 8CAA3ED5CB29999A6DA84739FDFF2D6B04489833
)
)
…并要求每个种子/哈希信息(可能的方法为reference).
foreach ($data['hash'] as $index => $hash) {
echo "d.get_name: "; print_r(request('d.get_name', $hash));
echo "\nd.get_base_path: "; print_r(request('d.get_base_path', $hash));
echo "\nd.get_hash: "; print_r(request('d.get_hash', $hash));
echo "\nd.is_active: "; print_r(request('d.is_active', $hash));
echo "\nd.get_down_total: "; print_r(request('d.get_down_total', $hash));
echo "\nd.get_up_total: "; print_r(request('d.get_up_total', $hash));
echo "\nd.get_size_bytes: "; print_r(request('d.get_size_bytes', $hash));
}
应该显示有关与哈希匹配的种子的信息,但是只有少数几个起作用.
d.get_name: [Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
d.get_base_path: /data/rtorrent/complete/[Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
d.get_hash: 0CF0C7F75D18281AE7C65309F6B798CEB149BCB8
d.is_active:
d.get_down_total:
d.get_up_total:
d.get_size_bytes:
d.get_name: [Anime-Koi] Tokyo Ravens - 03 [h264-720p][C997AD9B].mkv
d.get_base_path: /data/rtorrent/complete/[Anime-Koi] Tokyo Ravens - 03 [h264-720p][C997AD9B].mkv
d.get_hash: 8CAA3ED5CB29999A6DA84739FDFF2D6B04489833
d.is_active:
d.get_down_total:
d.get_up_total:
d.get_size_bytes:
多通话可以在一个请求中获得所有信息.但是这里也一样-不起作用.
print_r(request("d.multicall",array(
"main",
"d.get_name=",
"d.get_base_path=",
"d.get_up_total=",
"d.get_size_bytes=",
"d.get_down_total=",
"d.get_completed_chunks=",
"d.get_connection_current=",
"d.get_connection_leech=",
"d.get_connection_seed=",
"d.get_creation_date="
)));
Array
(
[0] => Array
(
[0] => [Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
[1] => /data/rtorrent/complete/[Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
[2] =>
[3] =>
[4] =>
[5] =>
[6] => seed
[7] =>
[8] =>
[9] =>
)
[1] => Array
(
[0] => [Anime-Koi] Tokyo Ravens - 03 [h264-720p][C997AD9B].mkv
[1] => /data/rtorrent/complete/[Anime-Koi] Tokyo Ravens - 03 [h264-720p][C997AD9B].mkv
[2] =>
[3] =>
[4] =>
[5] =>
[6] => seed
[7] =>
[8] =>
[9] =>
)
)
但是,全局请求运行良好.
print_r(request('view_list',null));
Array
(
[0] => main
[1] => default
[2] => name
[3] => active
[4] => started
[5] => stopped
[6] => complete
[7] => incomplete
[8] => hashing
[9] => seeding
[10] => leeching
)
print_r(request('system.listMethods',null));
Array
(
[0] => system.listMethods
[1] => system.methodExist
[2] => system.methodHelp
[...]
[959] => view_sort_new
[960] => xmlrpc_dialect
[961] => xmlrpc_size_limit
)
在请求函数中添加以下内容时,第一个torrent的xml-request的一些示例:
echo "request for \"$method\"\n".htmlentities($data)."\nresult: ";
request for "d.get_name"
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>d.get_name</methodName>
<params>
<param>
<value>
<string>0CF0C7F75D18281AE7C65309F6B798CEB149BCB8</string>
</value>
</param>
</params>
</methodCall>
result: [Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
request for "d.get_base_path"
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>d.get_base_path</methodName>
<params>
<param>
<value>
<string>0CF0C7F75D18281AE7C65309F6B798CEB149BCB8</string>
</value>
</param>
</params>
</methodCall>
result: /data/rtorrent/complete/[Anime-Koi] Tokyo Ravens - 01v2 [h264-720p][9E02D3C9].mkv
request for "d.get_down_total"
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>d.get_down_total</methodName>
<params>
<param>
<value>
<string>0CF0C7F75D18281AE7C65309F6B798CEB149BCB8</string>
</value>
</param>
</params>
</methodCall>
result:
request for "d.get_size_bytes"
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>d.get_size_bytes</methodName>
<params>
<param>
<value>
<string>0CF0C7F75D18281AE7C65309F6B798CEB149BCB8</string>
</value>
</param>
</params>
</methodCall>
result:
我做错了什么,只有一些请求返回有用的东西?
解决方法:
这是PHP-XMLRPC中的错误.
但是,您可以替换行:
$response = xmlrpc_decode(curl_exec($ch));
带有:
$response = xmlrpc_decode(str_replace('i8>', 'i4>', curl_exec($ch)));
这应该按预期工作.
内容总结
以上是互联网集市为您收集整理的php-来自rtorrent的空xmlrpc响应全部内容,希望文章能够帮你解决php-来自rtorrent的空xmlrpc响应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。