Не могу обслуживать http с WebViewAssetLoader - net: err_name_not_resolvedAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не могу обслуживать http с WebViewAssetLoader - net: err_name_not_resolved

Сообщение Anonymous »

Я пытаюсь разработать приложение, которое использует WebView для подключения к некоторым службам в моей локальной сети. Все эти услуги не являются безопасными, и поэтому моя веб -страница подключается к ним через http: // ... и ws: // .
Первоначально у меня были WebView Загрузка файлов локально с помощью файла: // Но я получил ошибки CORS, и, по поиску, я вижу, что я должен использовать WebViewAssetLoader вместо.
Проблема, с которой я сталкиваюсь с этим, заключается в том, что загрузчик, кажется, только обслуживает страницу над Https < /code>. В результате я в результате я нажимаю ошибку при попытке подключиться к небезопасному WebSocket:

»смешанный контент: страница https: // appassets. AndroidPlatform.net/assets/index.html 'был загружен на HTTPS, но попытался подключиться к конечной точке WebSocket. WS: // My-Server-IP '. Не предлагайте wss , но также кажется ненужным, учитывая, что это только когда -либо будет запущено в моей локальной сети.
Однако, если я сделаю myWebView.loadUrl ("http://appassets.androidplatform.net/assets/index.html") Затем страница не загружается, и я просто получаю страницу ошибки, говорящая net: err_name_not_resolved
Итак, возможно ли для WebViewassetLoader < /code> обслуживание страниц через http ?
файл mainactivity.kt выглядит так:

Код: Выделить всё

    class MainActivity : ComponentActivity() {

@OptIn(ExperimentalTvMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout)
val myWebView: WebView = findViewById(R.id.webview)
// Setup asset loader to handle local asset paths
val assetLoader = WebViewAssetLoader.Builder()
.addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this))
.build();

// This was needed to fix the mime type for javascript files
myWebView.webViewClient = object : WebViewClient() {
override fun shouldInterceptRequest(
view: WebView,
request: WebResourceRequest
): WebResourceResponse? {
val interceptedWebRequest = assetLoader.shouldInterceptRequest(request.url)
interceptedWebRequest?.let {
if (request.url.toString().endsWith("js", true)) {
it.mimeType = "text/javascript"
}
}
return interceptedWebRequest
}

}
myWebView.settings.javaScriptEnabled = true
myWebView.loadUrl("https://appassets.androidplatform.net/assets/index.html")

}

}
Файл Manifest включает Android: usescleartexttraffic = "true" , но это не оказало влияния.

Подробнее здесь: https://stackoverflow.com/questions/794 ... t-resolved
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»