ソースはここを丸ぱくり。はまったのは文字化けとContentTypeの指定。 文字化けは URLEncoder.encode で UTF-8 を指定すればよかったようだ・・・。
writer.write("status=${URLEncoder.encode('test=テスト from Groovy', 'UTF-8')}")
GroovyではてなAPIを利用しハイクに投稿Goovy版
Content-Type の指定は空白が無駄に入っていたせいだった。
【正】"application/x-www-form-urlencoded; charset=UTF-8" 【誤】"application/x-www-form-urlencoded ; charset=UTF-8"
で、こんな感じで投稿成功。
HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); urlconn.setRequestMethod("POST"); urlconn.setRequestProperty("Accept-Language", "ja"); urlconn.setRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); urlconn.setDoOutput(true); urlconn.connect(); PrintWriter writer = new PrintWriter(urlconn.getOutputStream()); writer.write("status=" + URLEncoder.encode("test=てすと","UTF-8")); writer.flush(); writer.close();
コンパイル → 実行 の手間を考えると Groovy いいなぁと思った今日この頃。