Я работаю с созданным API Gateway SDK в Java для Android, и хотя другие конечные точки работают нормально, эта конкретная конечная точка дает мне исключение 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
и дать моему приложению доступ к Интернету. Приложению было предоставлено интернет-разрешение, и, несмотря на то, что MyEndPointClient
равно final
или нет, ошибка все равно появляется. У кого-нибудь еще была эта проблема? Я что-то пропускаю?
UPDATE
Не решение, а другой подход к проблеме. Я поменял 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.