Rumah > Soal Jawab > teks badan
Saya menggunakan
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
PtrCLog.d("WebFragment", "onReceivedError: " + "");
}
Kaedah ini belum ditarik balik Saya periksa dan mengatakan bahawa ia memerlukan API23. . Adakah sesiapa tahu cara lain untuk mendapatkan 404?
phpcn_u15822017-05-16 13:28:53
new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
if (errorCode == 404) {
doSomething();
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
int errorCode = error.getErrorCode();
if (errorCode == 404) {
doSomething();
}
}
}
};
滿天的星座2017-05-16 13:28:53
Jalankan AsyncTask dalam onPageStarted, gunakan klien Http seperti OkHttpClient dalam AsyncTask untuk membuat permintaan untuk URL yang perlu diakses dan dapatkan kod tersebut
class WebViewStatusRequester extends AsyncTask<String, String, Integer> {
@Override
protected void onPreExecute() {
super.onPreExecute();
web.setVisibility(View.GONE);
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
if(result == 1) {
web.setVisibility(View.VISIBLE);
} else if(result == 0) {
showLoadFail();
}
}
@Override
protected Integer doInBackground(String... params) {
String url = params[0];
if(url.substring(0, 4).equals("file") == false) {
try {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()) {
return 1;
} else {
Log.i("TAG", "fail code:" + response.code());
return 0;
}
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
return 1;
}
}
Di sini, Webview dan OkHttpClient sebenarnya dimuatkan, tetapi WebView disembunyikan apabila AsyncTask berjalan Jika ia disahkan sebagai 200, ia akan dipaparkan Jika bukan 200, halaman yang gagal dimuatkan akan dipaparkan.