[技术学习] CPAN::WordPress:XMLRPC折腾记录

来源:互联网 发布:数据库应用 编辑:程序博客网 时间:2024/06/05 22:02
Keyword: WordPress XMLRPC 博客 PerlTitle: 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去感受。


http://www.disandu.com/?p=590