以下のようなコンテストに出すアプリ用メモ
東京メトロアプリコンテスト公式サイト
1.Volleyについて
取り合えずVolleyとAsyncTaskでデータを取ってみようとするも、文字化け
com.android.volley.toolbox.BasicNetwork
のperformRequest関数内でレスポンスヘッダを取る場所に
responseHeaders = convertHeaders(httpResponse.getAllHeaders()); /* 追加ポイント*/ responseHeaders.put("Content-Type","application/json;charset=utf-8");という形で強引にUTF-8にした。
Volleyは com.android.volley.toolbox.JsonObjectRequestを覗くと分かるように
new JSONObject(jsonString)とorg.jsonを利用している。
今回、JSON-LDなので、急遽jsonld-javaを導入した。
=======================
結論としてVolleyを使うと逆に面倒な感じになるっぽいので
HttpClientを使ってやることにした。
2.jsonld-javaについて
jsonld-java←これ
いろいろ面倒な感じではまったのでメモ
普通にApacheのHttpClientを使う形だったのだが、httpcomponents-client-4.3.5
だけを入れるとエラーが起こった。どうも内部で存在しないクラスを参照してるようだ。
ぐぐったら4.1を使ってねとか言われたので謎だったが4.1を入れてみる。
エラーが発生
今度は別の問題が発生。moudameda
多分ソースを自分でBuildすればいいんだろうなとおもいつつ、4.1と4.3を併用したら
動いた。
libs/
・commons-codec-1.6 (from 4.3.5)
・commons-logging-1.1.3 (from 4.3.5)
・fluent-hc-4.3.5 (from 4.3.5)
・httpclient-4.1 (from 4.1)
・httpclient-cache-4.1 (from 4.1)
・httpmine-4.3.5 (from 4.3.5)
・jackson-annotation-2.5.0
・jackson-core-2.5.0
・jackson-databind-2.5.0
※JSONLD-javaの内部でJacksonが使われている
あと
jsonldjava.core.DocumentLoaderの getDefaultHttpClient()関数内で
final DefaultHttpClient client = new SystemDefaultHttpClient();
という文があるのだがSystemDefaultHttpClient()関数が
見当たらないので
final DefaultHttpClient client = new DefaultHttpClient();
と書き換えたら普通に動いた。
良く分からないので、リリース時には変える予定。