私は、ネイティブ拡張機能を備えた Android 用の Flex Mobile アプリに取り組んでいます。Java コードで Retrofit を使用しようとしていますが、Retrofit 呼び出しが失敗します。
次のインターフェイスが定義されています。
public interface GitHubService {
@GET("/repos/{owner}/{repo}/contributors")
List<Contributor> contributors(
@Path("owner") String owner,
@Path("repo") String repo
);
}
次にAsyncTask
、Java コードの適切なポイントから呼び出します。そのdoInBackground
メソッドは次のようになります。
@Override
protected String doInBackground(String... arg0) {
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
RestAdapter restAdapter = new RestAdapter.Builder().setServer("https://api.github.com")
.setConverter(new GsonConverter(gson))
.build();
GitHubService service = restAdapter.create(GitHubService.class);
List<Contributor> contributors = service.contributors("square", "okhttp");
for (Contributor contributor : contributors) {
Log.d("FooTask", contributor.login + " - " + contributor.contributions);
}
return null;
}
これらすべてから、LogCat にリストが出力されることを期待しています。代わりに、次の例外が発生します。
FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
...
Caused by: java.lang.IllegalStateException: No Retrofit annotation found on parameter 1 of contributors
Flex Mobile のネイティブ拡張内で Retrofit を動作させる方法はありますか?