我在使我的网络视图正常工作时遇到麻烦
该网络视图应该显示此网址https://mcdonalds.de/deinfeedback,但是每当我尝试加载它时,我的onReceivedHttpError
方法都会向我返回
403禁止进入
错误。它对于https://www.google.com之类的其他网址也很好,但是我似乎无法使其适用于该网址。最初,我认为它与ssl证书有关,但是从未调用过WebViewClient的onReceiveSslError
。然后,我尝试将我的用户代理字符串更改为与我的移动浏览器中的字符串相同,但仍然返回相同的403错误
这是我的onCreate中处理WebView的部分
webViewDisplay.settings.builtInZoomControls = true
webViewDisplay.settings.displayZoomControls = false
webViewDisplay.settings.domStorageEnabled = true
webViewDisplay.settings.javaScriptEnabled = true
webViewDisplay.settings.javaScriptCanOpenWindowsAutomatically = true
webViewDisplay.webViewClient = MyWebClient()
webViewDisplay.loadUrl(resources.getString(R.string.web_activation_url_main)) //https://www.mcdonalds.de/deinfeedback
这是我的WebViewClient
inner class MyWebClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest): Boolean {
Log.v(TAG, "Overriding Url to ${request.url.toString()}")
return false //continues loading
}
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler, error: SslError?) {
Log.v(TAG, "Ssl Error")
handler.proceed() //handle error
}
override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse) {
Log.v(TAG, "Http Error ${errorResponse.statusCode} ${errorResponse.reasonPhrase}")
super.onReceivedHttpError(view, request, errorResponse)
}
}
我希望有人可以帮助我
编辑:
不是403错误。我已将布局的高度设置为wrap_content
,这使webView在某些站点上自动包装。将其更改为match_parent
可以修复它。
功劳归功于Dani
答案 0 :(得分:0)
您确定仅是WebView问题吗?在桌面浏览器中执行此网址,得到一个403-并看到与我在android的WebView中完全相同的内容。换句话说,如果您看到的相同,我认为您可以放心地忽略该错误。如果您看到其他内容,请附加快照。
编辑:现在可以肯定了。
添加:
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse) {
Log.v("APP", "Http Error ${request?.url} ${errorResponse.responseHeaders} ${errorResponse.reasonPhrase}")
super.onReceivedHttpError(view, request, errorResponse)
}
产生此: Http错误 https://s3-eu-west-1.amazonaws.com/automation.isc-mcd.svy.do--voc/public/de/.json {Transfer-Encoding = chunked,Server = AmazonS3,Access-Control-Allow-Origin = *,Access-Control-Allow-Methods = GET,Vary =来源,访问控制请求标头,访问控制请求方法,x-amz-request-id = AC63B0D940D45EDA,Access-Control-Max-Age = 3000,x-amz-id-2 = 7LKt0WZsaKdyYTQhN5cSmGSdUZMBR + D8mEaAOovorrV5jNJcS0CvNFb08K7QqnTkn4C73MfMWJI =,Date = Fri,03 Jan 2020 03:17:05 GMT,Content-Type = application / xml}禁止
请注意,这与导致桌面浏览器也禁止访问的请求完全相同。没有有害的副作用,可以忽略。