2014-02-07 44 views
1

我正在使用本机扩展的Android版Flex移动应用程序。我试图在Java代码中使用Retrofit,但是Retrofit调用失败。在Flex移动应用程序中使用改造

我有以下接口定义:

public interface GitHubService { 

@GET("/repos/{owner}/{repo}/contributors") 
    List<Contributor> contributors(
     @Path("owner") String owner, 
     @Path("repo") String repo 
); 
} 

然后,我必须在我的Java代码中的适当位置调用的AsyncTask。它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在本机扩展中进行改造工作?

+0

嗨你解决了这个问题吗?因为我面对同一个? – ShahrozKhan91

+0

我能找到的唯一解决方案是重写Java代码,以便不使用注释(任何注释,而不仅仅是Retrofit)。 – Brian

+0

如果其他人想要解决这个问题,我已经记录了Adobe的一个错误:https://bugbase.adobe.com/index.cfm?event=bug&id=4071110 – Michael

回答

0

目前这是不可能的。 ADT在dalvik的编译过程中去除了java类的所有注释。

相关问题