groovyで強引にblog更新pingを送ってみる
こんにちわ、みけです。
xmlrpcでブログ更新pingを打ってみる
キーワード「xmlrpc ping ブログ更新」で検索してみると、
大抵WordPressでのping送信の設定方法が出てくるので、
うーんと思ってたので、
googleのドキュメント
を読みつつ、強引にgroovyでブログ更新のpingを送ってみることにしました。
スクリプト本体
書いたスクリプトはこんな感じです。
import groovy.xml.* def w = new StringWriter() def x = new MarkupBuilder(w) x.mkp.xmlDeclaration(version:'1.0', encoding:'UTF-8') x.methodCall { methodName 'weblogUpdates.extendedPing' params { param { value 'mike-neckのブログ' } param { value 'http://mike-neck.hatenadiary.com/' } param { value 'http://mike-neck.hatenadiary.com/' } param { value 'http://mike-neck.hatenadiary.com/rss' } param { value 'java|groovy|xmlrpc' } } } def message = w.toString() def encoded = message.getBytes('UTF-8') def url = new URL('http://blogsearch.google.co.jp/ping/RPC2') def connection = url.openConnection() connection.doOutput = true connection.requestMethod = 'POST' connection.setRequestProperty ('Content-Length', "${encoded.size()}") connection.setRequestProperty ('Content-Type', 'text/xml') connection.setRequestProperty ('Host', 'blogsearch.google.co.jp') def writer = new PrintWriter(connection.outputStream) writer << message writer.flush() def reader = new BufferedReader(new InputStreamReader(connection.inputStream)) def res = new StringWriter() while(reader.ready()) { res << reader.readLine() res << '\n' } println res.toString() reader.close()
実行結果
実行したところ、こんな感じで返ってきました。
<?xml version="1.0"?>
<methodResponse><params>
<param><value><struct>
<member>
<name>flerror</name><value><boolean>0</boolean></value>
</member>
<member>
<name>message</name><value>Thanks for the ping.</value>
</member>
</struct></value></param>
</params></methodResponse>
先ほどのgoogleのドキュメントを参照する限り、
flerrorのところのvalueの値が0の場合は成功だそうです。
めでたく、groovyでブログ更新pingを送信できたようです。
以上