Я пытаюсь добавить возможность использования адресной строки в качестве строки поиска (как любой браузер уже делает, так что вы можете написать что-то и искать это с помощью Google или Bing и т. Д.), Но у меня проблема с однократнымищет ... например: если я ищу "Привет" (1 слово), это не работает, но если я ищу "Привет" (2 слова), это работает.Я пытаюсь это исправить.
Сейчас это мой код после переделки на основе комментария @Spender.Теперь он использует меньше try / catch (я использую Webview
):
public void Go(ref WebView web, string value, KeyRoutedEventArgs args)
{
Uri uri;
if (Uri.TryCreate(value, UriKind.Absolute, out uri))
{
}
else if (Uri.TryCreate($"http://{value}", UriKind.Absolute, out uri))
{
}
else if (Uri.TryCreate($"https://{value}", UriKind.Absolute, out uri))
{
}
else if (Uri.TryCreate($"https://www.google.com/search?q={Uri.EscapeUriString(value)}", UriKind.Absolute, out uri))
{
}
try
{
using (HttpClient Client = new HttpClient())
{
HttpResponseMessage result = Client.GetAsync(uri).Result;
HttpStatusCode StatusCode = result.StatusCode;
if (StatusCode == HttpStatusCode.Accepted || StatusCode == HttpStatusCode.OK)
{
} else
{
throw new System.ArgumentException("No exist", "original");
}
}
}
catch
{
Uri.TryCreate($"https://www.google.com/search?q={Uri.EscapeUriString(value)}", UriKind.Absolute, out uri);
}
web.Navigate(uri);
web.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}
Теперь, кажется, все работает нормально, но я не думаю, что это лучший способ сделать это ...блок try действительно медленный, теперь для открытия страницы требуется почти 4 секунды.Есть что-то лучшее, что я могу сделать?