こんにちわ、みけです。
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を送信できたようです。
以上