运行aria2官方的xmlrpc实例报错。

toaomama 2015-01-26 04:55:54
刚刚开始接触python,对于通过xml-rpc远程过程调用来控制aria2下载文件很感兴趣。刚好看到aria2的网络手册上有这么一段程序的实例,就在python2.7中运行了一下。(aria2的启动参数为: aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c )


import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent').read()))

程序运行后报错信息如下:


Traceback (most recent call last):
File "C:\test.py", line 3, in <module>
s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent').read()))
File "C:\Python27\lib\xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "C:\Python27\lib\xmlrpclib.py", line 1570, in __request
verbose=self.__verbose
File "C:\Python27\lib\xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "C:\Python27\lib\xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "C:\Python27\lib\xmlrpclib.py", line 1468, in parse_response
return u.close()
File "C:\Python27\lib\xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
Fault: <Fault 1: 'Bencode decoding failed: Expected 16860 bytes of data, but only 39 read.'>


看起来是编码的原因造成的,但是改了好久都搞不定,请csdn的高手们多指点迷津。

后台运行的aria2c.http://sourceforge.jp/projects/sfnet_aria2rpcmanager/downloads/win-releases/Aria2RPCManagerv1.0.zip/
...全文
703 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
toaomama 2015-01-27
  • 打赏
  • 举报
回复
引用 6 楼 panghuhu250 的回复:
[quote=引用 5 楼 toaomama 的回复:] [quote=引用 4 楼 panghuhu250 的回复:] 试试用二进制方式打开file.torrent.

s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent', 'b').read()))
试过了,报错信息为: Traceback (most recent call last): File "C:\test.py", line 3, in <module> s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent','b').read())) ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b' [/quote] 用'rb'.[/quote] 不是rb的事,不过我在其他地方问到方法了,谢谢您的回复,此贴就此结贴。
panghuhu250 2015-01-27
  • 打赏
  • 举报
回复
引用 5 楼 toaomama 的回复:
[quote=引用 4 楼 panghuhu250 的回复:] 试试用二进制方式打开file.torrent.

s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent', 'b').read()))
试过了,报错信息为: Traceback (most recent call last): File "C:\test.py", line 3, in <module> s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent','b').read())) ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b' [/quote] 用'rb'.
toaomama 2015-01-27
  • 打赏
  • 举报
回复
引用 4 楼 panghuhu250 的回复:
试试用二进制方式打开file.torrent.

s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent', 'b').read()))
试过了,报错信息为: Traceback (most recent call last): File "C:\test.py", line 3, in <module> s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent','b').read())) ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b'
panghuhu250 2015-01-26
  • 打赏
  • 举报
回复
试试用二进制方式打开file.torrent.

s.aria2.addTorrent(xmlrpclib.Binary(open('file.torrent', 'b').read()))
toaomama 2015-01-26
  • 打赏
  • 举报
回复
[quote=引用 2 楼 openXMPP 的回复:] 有可能是编码问题 默认的XMLRPC采用utf-8编码 如果里面有一些双字节编码的特殊符号 是会导致xmlrpc解码失败的 我遇见过这样的问题 你可以hook一个编码函数 然后直接skip掉非UTF8编码的字符[/quote 有这方面的实例和资料吗?
乔巴好萌 2015-01-26
  • 打赏
  • 举报
回复
有可能是编码问题 默认的XMLRPC采用utf-8编码 如果里面有一些双字节编码的特殊符号 是会导致xmlrpc解码失败的 我遇见过这样的问题 你可以hook一个编码函数 然后直接skip掉非UTF8编码的字符
toaomama 2015-01-26
  • 打赏
  • 举报
回复
另外运行官方手册中的那个json-rpc的实例也会报错。 报错信息为: Traceback (most recent call last): File "C:\test.py", line 5, in <module> c = urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq) File "C:\Python27\lib\urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "C:\Python27\lib\urllib2.py", line 397, in open response = meth(req, response) File "C:\Python27\lib\urllib2.py", line 510, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python27\lib\urllib2.py", line 435, in error return self._call_chain(*args) File "C:\Python27\lib\urllib2.py", line 369, in _call_chain result = func(*args) File "C:\Python27\lib\urllib2.py", line 518, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 500: Internal Server Error 我在ipython中一行一行运行,看起来原因也是编码出现了问题。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧