. Walau bagaimanapun, kadangkala disebabkan oleh beberapa keadaan khas, kami mungkin menghadapi pengecualian di mana pengalihan sambungan rangkaian gagal, iaitu, RedirectFailureException. Artikel ini akan memperkenalkan cara menyelesaikan pengecualian ini dan memberikan kod sampel.
1 Apakah itu RedirectFailureException?
RedirectFailureException ialah salah satu pengecualian yang akan dihadapi oleh perpustakaan sambungan rangkaian Java (seperti HttpURLConnection atau HttpClient) apabila menyambung ke rangkaian. Ia biasanya berlaku dalam keadaan berikut:
URL yang diubah hala adalah tidak sah atau tidak boleh diakses
Jumlah ubah hala terlalu banyak dan melebihi had maksimum yang dipratetap
Kod status ubah hala yang dikembalikan oleh pelayan
; Tamat masa sambungan atau ralat rangkaian.
- 2. Kaedah untuk menyelesaikan RedirectFailureException:
-
- Semak kesahihan URL:
Apabila menghadapi RedirectFailureException, semak dahulu sama ada URL yang diubah hala itu sah. Anda boleh menyemak kesahihan URL dengan menggunakan kaedah isValid() kelas java.net.URL. Kod sampel adalah seperti berikut: public static boolean isValidURL(String url) {
try {
new URL(url).toURI();
return true;
} catch (MalformedURLException | URISyntaxException e) {
return false;
}
}
Salin selepas log masuk
Tingkatkan had ubah hala:
Kadangkala, masa ubah hala pelayan mungkin melebihi had maksimum yang dipratetap, mengakibatkan pengecualian. Anda boleh meningkatkan had ubah hala dengan menetapkan kaedah setMaxRedirects() HttpURLConnection atau HttpClient. Kod sampel adalah seperti berikut:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFoll
owRedirects(false);
connection.setMaxRedirects(10); // 设置重定向次数限制为10次
Salin selepas log masuk
Mengendalikan URL yang diubah hala:
Apabila mengubah hala, pelayan akan mengembalikan medan pengepala "Lokasi", yang mengandungi URL yang diubah hala. Kami boleh mengubah hala sambungan ke URL baharu dengan mendapatkan medan ini. Kod sampel adalah seperti berikut:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
String redirectUrl = connection.getHeaderField("Location");
URL newUrl = new URL(redirectUrl);
HttpURLConnection newConnection = (HttpURLConnection) newUrl.openConnection();
Salin selepas log masuk
Tingkatkan tetapan tamat masa sambungan rangkaian:
Kadangkala tamat masa sambungan rangkaian akan menyebabkan pengecualian kegagalan pengalihan. Tetapan tamat masa boleh ditingkatkan dengan menetapkan tamat masa sambungan dan tamat masa baca. Kod sampel adalah seperti berikut:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000); // 连接超时设置为5秒
connection.setReadTimeout(5000); // 读取超时设置为5秒
Salin selepas log masuk
3. Ringkasan: Artikel ini memperkenalkan cara menyelesaikan pengecualian kegagalan ubah hala sambungan rangkaian Java (RedirectFailureException). Kami boleh menyelesaikan pengecualian ini dengan berkesan dengan menyemak kesahihan URL, meningkatkan had bilangan ubah hala, mengendalikan URL yang diubah hala dan meningkatkan tetapan tamat masa sambungan rangkaian. Saya berharap kandungan artikel ini akan membantu pembaca apabila mereka menghadapi masalah yang sama dalam pengaturcaraan rangkaian Java.
Walau bagaimanapun, perkara di atas hanyalah beberapa kaedah biasa untuk menyelesaikan pengecualian RedirectFailureException Penyelesaian khusus perlu dilaraskan dan diubah suai mengikut situasi sebenar. Apabila menghadapi pengecualian ini, anda harus nyahpepijat dan menyelesaikan masalah berdasarkan masalah khusus untuk mencari punca masalah dan mengambil penyelesaian yang sesuai. -
Rujukan: [1] Spesifikasi API Java SE 11: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/HttpURLConnection.html
[ 2 ] Spesifikasi API Java SE 11: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/URL.html
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan pengecualian kegagalan ubah hala sambungan rangkaian Java (RedirectFailureException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!