AWS APIGateway生成的sdk响应触发器由ApiClientException引起的NullPointerException

时间:2019-01-22 20:02:28

标签: java android android-studio aws-api-gateway api-gateway

我正在使用Java中用于Android的生成的API Gateway SDK进行工作,而其他端点也可以正常工作,但此特定端点一直给我NullPointerException。调试时,我发现此NullPointerException是由ApiClientException: Cannot evaluate $Proxy1.toString()引起的。更具体地说,在第14行(MyEndPointClient client = factory.build(MyEndPointClient.class))上,工厂建立者进入并建立了客户。因此,工厂制造商似乎遇到了问题。请参见下面的代码。

class MyEndPointGet extends AsyncTask<Void, EndPointRes, EndPointRes>{

    private String tkn;
    private String id;

    public ResDetailsGet(String tkn, String id){
        this.tkn = tkn;
        this.id = confID;
    }

    @Override
    protected EndPointRes doInBackground(Void... objects) {
        ApiClientFactory factory = new ApiClientFactory();
        MyEndPointClient client = factory.build(MyEndPointClient.class);
        EndPointRes detailres = myNewClient.detailstokenIdGet(this.tkn, this.id);
        return detailres;
    }

    public void onPostExecute(EndPointRes res){
        EndPointResDetails details = res.getDetails();
        updateView(details);
    }
}

当我在线研究此问题时,解决方案是将MyEndPointClient设置为final,并为我的应用程序提供Internet权限。该应用已获得互联网许可,无论MyEndPointClient是否为final,该错误仍然会出现。其他人遇到过这个问题吗?有什么我要忽略的吗?

更新

不是解决方案,而是解决问题的另一种方法。我用以下代码将AsyncTask替换为Runnable接口的实现:

class ResDetailsRunnable implements Runnable{

    String tkn, id;
    public ResDetailsRunnable(String tkn, String id){
        this.tkn = tkn;
        this.id = id;
    }

    @Override
    public void run() {
        ApiClientFactory factory = new ApiClientFactory();
        MyEndPointClient client = factory.build(MyEndPointClient.class);
        EndPointRes detailres = myNewClient.detailstokenIdGet(this.tkn, this.id);
        EndPointResDetails details = res.getDetails();
        updateView(details);
    }
}

运行此命令时,我像以前一样得到了ApiClientException,但是现在它显示为(Service: null; Status Code: 0; Error Code: null; Request ID: null)。这让我觉得请求没有通过,也没有建立连接,尽管我在/ details GET之前进行相同的调用。

0 个答案:

没有答案