запрос get не работает на устройстве android, но работает на моем компьютере - PullRequest
0 голосов
/ 25 января 2020

Я написал этот простой запрос на получение

OkHttpClient httpClient = new OkHttpClient();
StringBuilder url = new StringBuilder(serverURL);

String result = "init";
if(params!=null && params.size()!=0){
    url = url.append("?"+prepareParam(params));
}
Request request = new Request.Builder().url(url.toString()).build();
Response response = null;
try {
response = httpClient.newCall(request).execute();
result = response.body().string();
} catch (IOException e) {
    e.printStackTrace();
}
catch (Exception e){
    e.printStackTrace();
}finally {
    response.close();
}

, когда я тестировал его на своем p c, он работал просто отлично, однако, когда я тестировал его на своем мобильном телефоне, он дал мне следующее исключение

java.lang.NullPointerException: Attempt to invoke virtual method 'void okhttp3.Response.close()' on a null object reference

Ответы [ 2 ]

1 голос
/ 25 января 2020
  try{
      response.close();
  }
  catch(NullPointerException e){
   e.printStackTrace();
  }

внутри блока finally.

0 голосов
/ 25 января 2020

Попробуйте это, а не используйте этот метод try catch.

  OkHttpClient client = new OkHttpClient();
  String doGetRequest(String url) throws IOException {
    Request request = new Request.Builder()
        .url(url)
        .build();
    Response response = client.newCall(request).execute();
    return response.body().string();
  }

Затем просто вызовите вышеуказанный метод и передайте свой URL всякий раз, когда вам нужно.

 String response =doGetRequest(yourUrl);
...