Keyword: | WordPress XMLRPC 博客 Perl |
Title: | CPAN::WordPress:XMLRPC折腾记录 |
Date: | 2010年 01月 24日 星期日 |
1 这个页面的例程不能运行
http://kobesearch.cpan.org/htdocs/WordPress-API/WordPress/API/Page.htm
2 XMLRPC response错误
unclosed token at line 45, column 0, byte 2508 at /usr/lib/perl5/XML/Parser.pm line 187
<feff><?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member><name>dateCreated</name><value><dateTime.iso8601>20100123T15:23:59</dateTime.iso8601></value></member>
<member><name>userid</name><value><string>3</string></value></member>
<member><name>postid</name><value><int>551</int></value></member>
<member><name>description</name><value><string>Array</string></value></member>
<member><name>title</name><value><string>Vim reStructured Text DEMO</string></value></member>
<member><name>link</name><value><string>http://www.disandu.com/?p=551</string></value></member>
<member><name>permaLink</name><value><string>http://www.disandu.com/?p=551</string></value></member>
<member><name>categories</name><value><array><data>
<value><string>开源软件</string></value>
</data></array></value></member>
<member><name>mt_excerpt</name><value><string></string></value></member>
<member><name>mt_text_more</name><value><string></string></value></member>
<member><name>mt_allow_comments</name><value><int>1</int></value></member>
<member><name>mt_allow_pings</name><value><int>1</int></value></member>
<member><name>mt_keywords</name><value><string></string></value></member>
<member><name>wp_slug</name><value><string>vim-restructured-text-demo</string></value></member>
<member><name>wp_password</name><value><string></string></value></member>
<member><name>wp_author_id</name><value><string>3</string></value></member>
<member><name>wp_author_display_name</name><value><string>thinkhy</string></value></member>
<member><name>date_created_gmt</name><value><dateTime.iso8601>20100123T07:23:59</dateTime.iso8601></value></member>
<member><name>post_status</name><value><string>publish</string></value></member>
<member><name>custom_fields</name><value><array><data>
<value><struct>
<member><name>id</name><value><string>961</string></value></member>
<member><name>key</name><value><string>_encloseme</string></value></member>
<member><name>value</name><value><string>1</string></value></member>
</struct></value>
<value><struct>
<member><name>id</name><value><string>960</string></value></member>
<member><name>key</name><value><string>_pingme</string></value></member>
<member><name>value</name><value><string>1</string></value></member>
</struct></value>
</data></array></value></member>
<member><name>sticky</name><value><boolean>0</boolean></value></member>
</struct>
</value>
</param>
</params>
</methodRespons at /usr/local/share/perl/5.10.0/WordPress/XMLRPC.pm line 601
注意上面返回的response缺少最后两个字符 e>
-
解决办法:
-
-
/usr/local/share/perl/5.10.0/SOAP/Lite.pm
-
Line:3715/5613 加上这一行:
$response = $response . "e>";
3 宽字符提交出错
Wide character in subroutine entry at /usr/local/share/perl/5.10.0/XMLRPC/Lite.pm line 181.出错位置: MIME::Base64::encode_base64 解决方法: http://perldoc.perl.org/MIME/Base64.html 修改/usr/local/share/perl/5.10.0/XMLRPC/Lite.pm 函数 as_base64 Line: 178 将
return ['base64', {}, MIME::Base64::encode_base64($value, '')];
改为:
return ['base64', {}, MIME::Base64::encode_base64(encode("UTF-8", $value),'')];
参考: http://bbs.chinaunix.net/archiver/?tid-1340623.html
4 重大发现
以下两种方式不同:
my $o = WordPress:::XMLRPC->new({
username => 'author1',
password => 'superpass',
proxy => 'http://mysite.com/xmlrpc.php',
});
上面这种方式返回的response 缺少se 另一种方面
my $o = WordPress:::XMLRPC->new;
$o->username('author1');
$o->password('superpass');
$o->proxy('http://mysite.com/xmlrpc.php');
$o->server
or die(
sprintf 'could not connect with %s:%s to %s',
$self->username,
$self->password,
$self->proxy,
);
而这种形式的调用,返回一个HTML页面,导致之前添加的“se”变为多余。
100123 21:50 今天还是完不成博客提交工具:
-
title部分有问题,不能上传包含汉字的标题(上传后为空)。
-
上传的图片大小为0。
后记: 近两周每周六都会折腾Perl,CPAN太强大了,但其中的代码不一定适合自己,好在Perl代码都是开源的,可以折腾这些代码以实现自己想要的功能,在折腾的过程也发现了CPAN中的代码之美,并学习XMLRPC编程方式。最近突然有种开悟,学习一门编程语言最好的办法可能直接杀到它的库代码中,看个空间,这样在不知不觉中就学会了。以前看过《千万不能学英语》这本书,提倡 Just learn English,Not study English,学编程或许也可以To learn去感受。
-