<!--
body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: Verdana, sans-serif;
counter-reset: chapter section subsection subsubsection paragraph lchapter lsection lsubsection lsubsubsection lparagraph}
div.footnote { border-left: 1px solid #000; margin-left: 0em; clear: both }
div.ftext { position: relative; margin-left: 50px }
div.fnumber { float: left; width: 40px; padding: 0em; margin-left: 0.5em; margin-top: 0em }
div.fnumber a { margin: 0px; padding: 0px }
div.ctext { position: relative; margin-left: 100px }
div.cnumber { float: left; width: 90px; padding: 0em; margin-left: 0.5em; margin-top: 0em }
div.cnumber a { margin: 0px; padding: 0px }
div.tip { border: 2px solid #0d0; margin: 0.5em 2em 1em 2em; padding: 0em 1em }
div.warning, div.caution, div.danger, div.error { border: 2px solid #f00; margin: 0.5em 2em 1em 2em; padding: 0em 1em }
div.note, div.hint, div.important { border: 2px solid #000; margin: 0.5em 2em 1em 2em; padding: 0em 1em }
div.figure { display: block; padding: 1em; width: 400px; clear: both}
div.topic { margin: 2em }
div.vstsidebar, div.sidebar { border: 2px solid #aaa; color: #000; background-color: #ffffee; float: right; width: 40%; margin-left: 1em; margin-right: -1em; padding: 1em }
span.strike { text-decoration: line-through }
span.big { font-size: large }
span.small { font-size: small }
span.title { font-style: italic }
span.notetitle { font-size: large; font-weight: 900; font-family: Verdana, sans-serif }
p.toc { font-size: large; font-weight: 900 }
p.notesubtitle { font-weight: 900; font-family: Verdana, sans-serif }
p.attribution { font-style: italic; margin-left: 8em; text-indent: -1.4em }
.vstright { float: right; margin: 1em }
.vstleft { float: left; margin: 1em }
.vstcenter { margin: 1em auto }
blockquote.pull { font-size: large }
p.rubric { font-size: large; margin-left: 2em }
dd.normal { margin-bottom: 0.5em }
dt.option { float: left; margin: 0em 0em 5px 2em; padding: 0px; font-family: monospace }
dd.option { padding: 0px; margin: 0em 0em 5px 10em; text-indent: 0.5em }
dd.option > p { margin: 0px }
dd.normal > p { margin: 0px }
table { border-collapse: collapse; margin: 0.5em 0em }
thead, tfoot { text-align: center; font-weight: bold }
td { border: 1px solid #000; padding: 0.25em; _top: 0%; vertical-align: top }
td blockquote p{ margin: 0px; padding: 0px}
td blockquote { margin: 0px; padding: 0px}
table.vstbless td { border: 0px solid #000; padding: 0.25em; _top: 0%; vertical-align: top }
td > p { margin: 0px }
table.field { border: 0px solid #000; margin-left: 2em; padding: 0.25em; _top: 0%; vertical-align: top }
td.fkey { font-weight: 900 }
td.fval { border: 0px solid #000; padding: 0.25em; _top: 0%; vertical-align: top }
td.fkey { font-weight: 900; border: 0px solid #000; padding: 0.25em; _top: 0%; vertical-align: top }
td.fdkey { text-align: center; font-weight: 900 }
td.fdval { text-align: center; font-style: italic }
td.fakey { text-align: center; font-weight: 900 }
td.faval { border: 0px solid #000; padding: 0.25em; _top: 0%; vertical-align: top }
hr { width: 80%; margin: 1.5em auto }
h1 { text-align: center; clear: both }
h2, h3, h4, h5, h6 { text-align: left; margin-top: 1em; clear: both }
h2 { counter-reset: section subsection subsubsection paragraph }
h3 { counter-reset: subsection subsubsection paragraph }
h4 { counter-reset: subsubsection paragraph }
h5 { counter-reset: paragraph }
h1 a { color: #000; background-color: transparent }
h2 a { color: #000; background-color: transparent }
h3 a { color: #000; background-color: transparent }
h4 a { color: #000; background-color: transparent }
h5 a { color: #000; background-color: transparent }
h6 a { color: #000; background-color: transparent }
p.subh1 { text-align: center; font-size: 120%; font-variant: small-caps }
p.subh2, p.subh3, p.subh4, p.subh5, p.subh6 { text-align: left; font-size: 120%; font-variant: small-caps }
h2:before { content: counter(chapter)" "; counter-increment: chapter }
h3:before { content: counter(chapter)"."counter(section)" "; counter-increment: section }
h4:before { content: counter(chapter)"."counter(section)"."counter(subsection)" "; counter-increment: subsection }
h5:before { content: counter(chapter)"."counter(section)"."counter(subsection)"."counter(subsubsection)" "; counter-increment: subsubsection }
h6:before { content: counter(chapter)"."counter(section)"."counter(subsection)"."counter(subsubsection)"."counter(paragraph)" "; counter-increment: paragraph}
li.h1 { margin-left: 0em }
li.h2 { margin-left: 1em; counter-reset: lsection lsubsection lsubsubsection lparagraph }
li.h3 { margin-left: 2em; counter-reset: lsubsection lsubsubsection lparagraph }
li.h4 { margin-left: 3em; counter-reset: lsubsubsection lparagraph }
li.h5 { margin-left: 4em; counter-reset: lparagraph }
li.h2:before { content: counter(lchapter)" "; counter-increment: lchapter }
li.h3:before { content: counter(lchapter)"."counter(lsection)" "; counter-increment: lsection }
li.h4:before { content: counter(lchapter)"."counter(lsection)"."counter(lsubsection)" "; counter-increment: lsubsection }
li.h5:before { content: counter(lchapter)"."counter(lsection)"."counter(lsubsection)"."counter(lsubsubsection)" "; counter-increment: lsubsubsection }
li.h6:before { content: counter(lchapter)"."counter(lsection)"."counter(lsubsection)"."counter(lsubsubsection)"."counter(lparagraph)" "; counter-increment: lparagraph}
li.h6 { margin-left: 5em }
ol, ul { margin-bottom: 0.5em; margin-top: 0.5em }
ol.loweralpha { list-style-type: lower-alpha }
ol.upperalpha { list-style-type: upper-alpha }
ol.lowerroman { list-style-type: lower-roman }
ol.upperroman { list-style-type: upper-roman }
ol.decimal { list-style-type: decimal }
ul.square { list-style-type: square }
ul.circle { list-style-type: circle }
ul.disc { list-style-type: disc }
li > p { margin: 0em }
img { border: 1px solid #000; padding: 0em; display: block; margin: 1em auto }
img.inline { border: 1px solid #000; padding: 0em; margin: 0em; display: inline }
pre { color: #000; background-color: #eee; margin-left: 2em; clear: both; overflow: auto }
div.unknown { font-family: monospace; color: #000; background-color: #fff; margin: 1em; padding: 1em; clear: both; border: 3px solid red}
pre.quoted { color: #000; background-color: #eee; margin-left: 0em; clear: both; overflow: auto }
pre.rawlatex { color: #000; background-color: #ddd; border: 1px solid #000; padding: 0.1em; clear: both; overflow: auto }
pre.address { font-family: Verdana, sans-serif; display: inline; margin: 0px; color: #000; background-color: #fff; overflow: auto }
span.target { text-decoration: underline }
div.vstfooter hr { width: 100%; margin: 0px }
div.vstfooter p { margin: 0px }
-->
<!--
.tohtml-xml evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-xml evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
.tohtml-xml evening .Identifier { color: #40ffff; }
.tohtml-xml evening .Error { color: #ffffff; background-color: #ff0000; }
.tohtml-xml evening .Comment { color: #80a0ff; }
.tohtml-xml evening .Type { color: #60ff60; font-weight: bold; }
.tohtml-perl evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-perl evening .Identifier { color: #40ffff; }
.tohtml-perl evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
.tohtml-perl evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-perl evening .Statement { color: #ffff60; font-weight: bold; }
.tohtml-perl evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
.tohtml-perl evening .Identifier { color: #40ffff; }
.tohtml-perl evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-perl evening .Statement { color: #ffff60; font-weight: bold; }
.tohtml-perl evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
.tohtml-perl evening .Identifier { color: #40ffff; }
.tohtml-perl evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-perl evening .Statement { color: #ffff60; font-weight: bold; }
.tohtml-perl evening .Identifier { color: #40ffff; }
.tohtml-perl evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
.tohtml-perl evening { color: #ffffff; background-color: #333333; font-family: monospace; }
.tohtml-perl evening .Statement { color: #ffff60; font-weight: bold; }
.tohtml-perl evening .Identifier { color: #40ffff; }
.tohtml-perl evening .Constant { color: #ffa0a0; background-color: #0d0d0d; }
/*]]>*/
-->
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>xmlversion="1.0"
<methodResponse>
<params>
<param>
<value>
<struct>
<member><name>dateCreated</name><value><dateTimeiso8601>20100123T15:23:59</dateTimeiso8601></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><dateTimeiso8601>20100123T07:23:59</dateTimeiso8601></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
ordie(
sprintf'could not connect with %s:%s to %s',
$self->username,
$self->password,
$self->proxy,
);
而这种形式的调用,返回一个HTML页面,导致之前添加的“se”变为多余。
100123 21:50
今天还是完不成博客提交工具:
后记: 近两周每周六都会折腾Perl,CPAN太强大了,但其中的代码不一定适合自己,好在Perl代码都是开源的,可以折腾这些代码以实现自己想要的功能,在折腾的过程也发现了CPAN中的代码之美,并学习XMLRPC编程方式。最近突然有种开悟,学习一门编程语言最好的办法可能直接杀到它的库代码中,看个空间,这样在不知不觉中就学会了。以前看过《千万不能学英语》这本书,提倡 Just learn English,Not study English,学编程或许也可以To learn去感受。
http://www.disandu.com/?p=590
分享到:
相关推荐
CPAN :: YACSmoke-另一个CPAN烟雾测试仪
Dist-Zilla-Plugin-ChangelogFromGit-CPAN-Changes:从git生成有效的CPAN :: Changes更改日志
语言:English 主题meta ::根据您的口味 此扩展允许您将自定义主题应用于metacpan.org
Ftree-cpan:使用Dist :: Milla将Ftree放入cpan
名称CPAN::WWW::Top100::Retrieve - 从检索 CPAN Top100 数据版本 This document describes v1.001 of CPAN::WWW::Top100::Retrieve - released November 06, 2014 as part of CPAN-WWW-Top100-Retrieve.概要 #!...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
离线安装包,亲测可用
名称App::CPAN::Fresh - 从新镜像实时查询和安装 CPAN 模块弃用由于 FriendFeed 已关闭,此模块不再工作。 您可以使用cpanm的--metacpan选项来启用 MetaCPAN API 搜索,这可以几乎实时地为您提供最近更新的模块。 ...
Nexus储存库CPAN格式 目录 发展 要求 通过网络访问 另外,有大量可用信息 建造 要构建项目并生成捆绑包,请使用Maven mvn clean install 如果一切顺利,则CPAN捆绑软件应在target文件夹中可用 将CPAN与Nexus ...
网站管理工具使您可以通过Ajax-Xsl Web 2.0界面查看和管理MySQL数据库。... 删除cgi-bin / install.pl删除install.html或通过cpan进行简单的操作MySQL :: Admin可从Cpan软件包中获得对mod_perl的支持。
perl-Astro-SLA:Perl CPAN Astro :: SLA模块与slalib位置天文学库接口
xml-feed:CPAN模块XML :: Feed
离线安装包,亲测可用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
Writing Perl Modules for CPAN offers Perl developers a comprehensive guide to using and contributing to the Comprehensive Perl Archive Network (CPAN). Starting with a general overview of CPAN’s ...
解析词 基于模块的Golang软件包。 Go正则表达式的功能不如Perl强大,因此解析器的内部结构更加复杂。 Text::ParseWords提供的所有测试均已实现并通过。 基准 ...$wc bench/bench.txt 6051 28059 227639 bench/...
主要介绍了Perl中的10个操作日期和时间的CPAN模块介绍,本文介绍了Date::Manip、DateTime、Time::Format、Time::Interval、Date::Convert、Benchmark、Time::Normalize、Regexp::Common::time等10个模块,需要的朋友...
encoding-fixlatin:CPAN模块:修复UTF8数据中的Latin-1和CP1252字符
p5-Test-LeakTrace:在CPAN上测试:: LeakTrace