我需要在WebView中发布一个URL,其中包含标题和表单主体.我添加了下面的代码,但WebView加载页面内容纯HTML.
有人能帮我解决这个问题吗?任何帮助都是高度赞赏.
thanks in advance
binding.webView.apply {
settings.javaScriptEnabled = true
settings.domStorageEnabled = true
settings.allowContentAccess = true
settings.loadWithOverviewMode = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
showLoadingView()
return false
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
hideLoadingView()
}
override fun shouldInterceptRequest(
view: WebView?,
request: WebResourceRequest
): WebResourceResponse {
return postDataOkHttpClient(supportCenter)
}
}
loadUrl(supportCenter?.consumerUrl ?: "")
}
private fun postDataOkHttpClient(supportCenter: SupportCenter?): WebResourceResponse {
val client = OkHttpClient()
val mediaType = "application/json; charset=utf-8".toMediaType()
val jsonObject = JSONObject()
jsonObject.put("token", supportCenter?.token ?: "")
jsonObject.put("lang", supportCenter?.lang ?: "")
jsonObject.put("channel", supportCenter?.channel ?: "")
val body = jsonObject.toString().toRequestBody(mediaType)
val request = Request.Builder()
.url(supportCenter?.consumerUrl ?: "")
.addHeader("Authorization", supportCenter?.authToken ?: "")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.post(body)
.build()
val response = client.newCall(request).execute()
return WebResourceResponse(
getMimeType(supportCenter?.consumerUrl ?: ""),
response.header("content-encoding", "utf-8"),
response.body!!.byteStream()
)
}
private fun getMimeType(url: String?): String? {
var type: String? = null val
extension = MimeTypeMap.getFileExtensionFromUrl(url)
if (extension != null) {
when (extension) {
"js" -> {
return "text/javascript"
}
"woff" -> {
return "application/font-woff"
}
"woff2" -> {
return "application/font-woff2"
}
"ttf" -> {
return "application/x-font-ttf"
}
"eot" -> {
return "application/vnd.ms-fontobject"
}
"svg" -> {
return "image/svg+xml"
}
else -> type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension)
}
}
return type
}
我已经try 了不同的设置为WebView,因此,你看到这么多的设置应用,并设置settings.layout算法rithm = WebSettings.Layout算法rithm.NORMAL以及我try 了与和没有mimeType在WebResourceResponse.但它似乎没有正确加载页面.