Wie 412 Vorbedingungsfehler in Android WebView URL zu erkennen
Ich verwende eine authentifizierte Webansicht für meine App. Es gibt eine URL, die in Bezug auf einen Suchbegriff aufgerufen wird. Wenn Sie also abc in das Suchfeld eingeben, wird die URL aufgerufen. "http://something.com/something/ABC/ something ". Es wird in Ordnung geladen, bis ich einen ungültigen Suchbegriff habe. Wenn ich" INVALIDCRAP "eingebe, wird die URL weiterhin als"http://something.com/something/INVALIDCRAP/ irgendwas und versuche es zu laden und gebe mir so den 412 Vorbedingungsfehler. Ich möchte es so machen, dass, falls der Bezeichner "INVALIDCRAP" nicht existiert, anstelle des 412-Vorbedingungsfehlers "google.com" angezeigt wird. Vielen Dank im Voraus Hier ist mein Code für das gleiche:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = this.getArguments();
URL = getUrl();
if(bundle != null)
mSearchTerm = getArguments().getString(SEARCH_TERM);
}
public void setSearchTerms(String sTerms){
mSearchTerm = sTerms;
}
private static String getUrl(){
String url = "";
final String getuuid = SharedPreferencesManager.getInstance().getUUID();
final String environmentApi = SharedPreferencesManager.getInstance().getEnvironmentApi();
if (environmentApi.equalsIgnoreCase(NetworkUtils.Apis.ALPHA)) {
"https://something.com/service/v1/?q="+mSearchTerm+"%20revenue&ui.theme=novadark&uuid="+getuuid+"&userAgent=android";
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (goingBack) {
return null;
}
final MainActivity activity = (MainActivity) getActivity();
final Resources resources = Application.getAppResources();
activity.setBackPressListener(this);
View view = inflater.inflate(R.layout.fragment_search_answers, container, false);
mWebview = (WebView)view.findViewById(R.id.webview);
progressBar = (LinearLayout) view.findViewById(R.id.loading);
mWebview.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.VISIBLE);
mWebview.setWebViewClient(new MyWebViewClient(this, mWebview));
mWebview.setBackgroundColor(0);
mWebview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebview.getSettings().setAllowFileAccess(true);
mWebview.getSettings().setDomStorageEnabled(true);
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.setHttpAuthUsernamePassword(HOST, REALM, USERNAME, PASSWORD);
mWebview.setScrollbarFadingEnabled(false);
mWebview.getSettings().getLoadsImagesAutomatically();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
mWebview.getSettings().setDisplayZoomControls(false);
if(StringUtils.isEmpty(URL)){
}else if(!StringUtils.isEmpty(URL)){
if(URLUtil.isValidUrl(URL)){
mWebview.loadUrl(URL);
}else{
mWebview.loadUrl("http://www.google.com");
}
}
return view;
}
public class MyWebViewClient extends WebViewClient {
private String loginCookie;
public MyWebViewClient(AnswersWebViewFragment answersWebViewFragment, WebView webview) {
super();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
view.setVisibility(View.VISIBLE);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(url, loginCookie);
final Animation fade = new AlphaAnimation(0.0f, 1.0f);
fade.setDuration(200);
view.startAnimation(fade);
view.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedError( WebView view, int errorCode, String description, String failingUrl ) {
Toast.makeText(view.getContext(), "Authentication Error", Toast.LENGTH_LONG).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
@Override
public void onLoadResource( WebView view, String url ){
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedHttpAuthRequest( WebView view, final HttpAuthHandler handler, final String host, final String realm ){
handler.proceed(USERNAME,PASSWORD);
}
@Override
public void onReceivedSslError( WebView view, SslErrorHandler handler, SslError error ) {
handler.proceed();
}
}
Hier ist der Bildschirm für das gleiche: