【问题标题】:Using Retrofit with a Flex Mobile app将 Retrofit 与 Flex 移动应用程序一起使用
【发布时间】:2014-03-05 10:50:32
【问题描述】:

我正在开发一个带有原生扩展的适用于 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

有没有办法让 Retrofit 在带有 Flex Mobile 的本机扩展中工作?

【问题讨论】:

  • 您好,您解决了这个问题吗?因为我也面临同样的问题?
  • 我能找到的唯一解决方案是重写 Java 代码以不使用注释(任何注释,而不仅仅是 Retrofit)。
  • 如果其他人想解决这个问题,我已经用 Adob​​e 记录了一个错误:bugbase.adobe.com/index.cfm?event=bug&id=4071110

标签: java android apache-flex air-native-extension retrofit


【解决方案1】:

目前这是不可能的。 ADT 在 dalvik 的编译过程中从 java 类中剥离所有注解。

【讨论】:

    猜你喜欢
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多