我正在使用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之前进行相同的调用。