2014年9月30日火曜日

東京メトロアプリコンテスト用メモ



以下のようなコンテストに出すアプリ用メモ
東京メトロアプリコンテスト公式サイト


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();

と書き換えたら普通に動いた。

使ったライブラリの場所
HttpClient archive.apache.org 
JSON-LD jsonld-java
Jackson   oss.sonatype.org
良く分からないので、リリース時には変える予定。

0 件のコメント:

コメントを投稿