Как задать таймаут в HttpURLConnection для андроид?
Года 2-3 назад этот код работал, а потом вышли обновления и перестало. Код получает строку с сервера. Всё работает. А когда отправляю запрос на несуществующий адрес (просто для имитации недоступности), то прогресс бар крутит до упора, секунд 10-15. Как прервать по таймауту? Гуглил, но все ответы ведут на аналогичный код и таймаут не работает.
Java:
private void GetDataFromServer(String url) {
mProgressBar.setVisibility(View.VISIBLE);
final String[] answer = {"0"};
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... params) {
URL url;
HttpURLConnection urlConnection;
try {
url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(1000); // таймаут
urlConnection.setConnectTimeout(1000);
urlConnection.connect();
int ResponseCode = urlConnection.getResponseCode();
if (ResponseCode == 200){
InputStream is = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(
new InputStreamReader(is, "UTF-8"));
StringBuilder sb = new StringBuilder();
String bfr_st;
while ((bfr_st = br.readLine()) != null) {
sb.append(bfr_st);
}
answer[0] = sb.toString();
is.close();
br.close();
}
else {
return "error";
}
} catch (MalformedURLException e) {
e.printStackTrace();
return "000";
} catch (IOException e) {
e.printStackTrace();
return "000";
}
return answer[0];
}
@Override
protected void onPostExecute(String answer) {
onComplete(answer);
}
}.execute(url);
}
Xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:visibility="gone"
android:layout_centerHorizontal="true"/>
</RelativeLayout>