すごくはまったのでメモ
ScalaのDispatchを使って日本語文字列をPOSTすると、送信する時点で????????
となってしまい大いに悩みました。
たくさんぐぐって以下のサイトで解決することができました。
結論2つの文字コード指定が必須みたいです。
-
Content-Type
に文字コードを指定すること - urlから生成されたオブジェクトに
subject.underlying { _.setBodyEncoding("UTF-8")}
を指定すること
def getGeonlp(kw: String): String = {
val svc = url("http://example.com/hoge.php").POST
.setBody("""{"method":"parse", "params":["""" + kw + """",{"geojson":true}], "id":0}""")
.setHeader("Accept", "application/json")
.setHeader("Content-Type", "application/json; charset=utf-8") // このcharsetが必須
svc.subject.underlying { _.setBodyEncoding("UTF-8") } // この行が必須
val future = Http(svc OK as.String)
val f = future()
println(f)
println(f.length)
f
}