Saya telah membuat fungsi berikut untuk memeriksa status koneksi:
private void checkConnectionStatus() {
HttpClient httpClient = new DefaultHttpClient();
try {
String url = "http://xxx.xxx.xxx.xxx:8000/GaitLink/"
+ strSessionString + "/ConnectionStatus";
Log.d("phobos", "performing get " + url);
HttpGet method = new HttpGet(new URI(url));
HttpResponse response = httpClient.execute(method);
if (response != null) {
String result = getResponse(response.getEntity());
...
Ketika saya menutup server untuk menguji eksekusi menunggu lama di baris
HttpResponse response = httpClient.execute(method);
Adakah yang tahu cara mengatur batas waktu agar tidak menunggu terlalu lama?
Terima kasih!
java
android
timeout
httpresponse
Niko Gamulin
sumber
sumber
Untuk mengatur pengaturan pada klien:
Saya telah menggunakan ini dengan sukses di JellyBean, tetapi seharusnya juga berfungsi untuk platform lama ....
HTH
sumber
Jika Anda menggunakan pustaka klien http Jakarta, maka Anda dapat melakukan sesuatu seperti:
sumber
Jika Anda menggunakan klien http default, berikut ini cara melakukannya menggunakan params http default:
Kredit asli diberikan ke http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/
sumber
Bagi mereka yang mengatakan bahwa jawaban @ kuester2000 tidak berfungsi, harap perhatikan bahwa permintaan HTTP, pertama-tama coba temukan IP host dengan permintaan DNS dan kemudian buat permintaan HTTP aktual ke server, jadi Anda mungkin juga perlu mengatur batas waktu untuk permintaan DNS.
Jika kode Anda berfungsi tanpa batas waktu untuk permintaan DNS, itu karena Anda dapat mencapai server DNS atau Anda menekan cache Android DNS. Omong-omong, Anda dapat menghapus cache ini dengan memulai ulang perangkat.
Kode ini memperluas jawaban asli untuk menyertakan pencarian DNS manual dengan batas waktu khusus:
Metode yang digunakan:
Kelas ini dari posting blog ini . Pergi dan periksa pernyataan apakah Anda akan menggunakannya.
sumber
sumber
Anda dapat membuat contoh HttpClient dengan cara dengan Httpclient-android-4.3.5, ini dapat bekerja dengan baik.
sumber
Opsi adalah menggunakan klien OkHttp , dari Square.
Tambahkan ketergantungan perpustakaan
Di build.gradle, sertakan baris ini:
Di mana
x.x.x
versi perpustakaan yang diinginkan.Atur klien
Misalnya, jika Anda ingin mengatur batas waktu 60 detik, lakukan cara ini:
ps: Jika minSdkVersion Anda lebih besar dari 8, Anda dapat menggunakan
TimeUnit.MINUTES
. Jadi, Anda cukup menggunakan:Untuk detail lebih lanjut tentang unit, lihat TimeUnit .
sumber
Jika Anda menggunakan
HttpURLConnection
, panggilsetConnectTimeout()
seperti dijelaskan di sini :sumber
sumber