WebView 中的 Paypal = 白页(不是 https 问题)

Posted

技术标签:

【中文标题】WebView 中的 Paypal = 白页(不是 https 问题)【英文标题】:Paypal in WebView = White Page (not an https issue) 【发布时间】:2014-02-19 23:32:10 【问题描述】:

简单的 android 应用程序,带有 WebView,当我打开 PayPal 网站的任何 url 时,即:

mWebView.loadUrl("https://www.paypal.com/ua/cgi-bin/webscr?cmd=_run-check-cookie-submit&redirectCmd=_login-submit");

它显示白页

我遵循过滤 JS 的建议 http://webdevsys.com/paypalBlankPage.htm

我在我的应用 Java 代码的“onLoadResource”部分跳过了这个 JS:

...
onLoadResource(WebView view, String url)
            if(url.contains("pp_jscode_080706.js")
                    )
             else  
                  super.onLoadResource(view, url);
                           

...

但它没有帮助。

JS 已启用,

webSettings.setjavascriptEnabled(true);

我没有打开浏览器的设置 在 ShouldOverrideUrlLoading 中,所以所有 url 和重定向都是内部的

这不是 https 问题,我什至添加了(但没有错误):

@Override
        public void onReceivedSslError(WebView view,
            SslErrorHandler handler, SslError error) 
            android.util.Log.i("!!!!", "ssl error = " + "SSL Error received: "+ error.getPrimaryError());
            handler.proceed();
        

我在清单中有 API 最低级别 8,在真实设备 4.1.1 和模拟器 4.2.2 上测试

【问题讨论】:

您是否有办法查看您的请求的外观(在线)?也许在网络上的另一台计算机上使用 Wireshark(具有混杂模式)或在本身用作热点的计算机上运行它。也许 Paypal 无法识别您的用户代理分辨率并将大小保留为 1 个像素。 @selalerer,我会尝试设置标准用户代理,因为现在我有一个自定义的, - “Android myapp”。顺便说一句,在 ios 上,所有的自定义用户代理都可以使用,即使没有像 iphone/ipad 这样的词。 @selalerer,它可以在没有用户代理的情况下工作!谢谢,请粘贴您的评论作为答案,我会接受。 很高兴听到它有效。这只不过是一个有根据的猜测:-) 这也是我的想法,作为选项,但我拒绝这个,因为我的自定义 UA 中已经有“android”这个词 :) 顺便说一句,现在我的最终用户代理是:Mozilla/5.0 (Linux ; U; Android 2.2.1; de-de; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (Khtml, like Gecko) Version/4.0 Mobile Safari/533.1; MyApp 我需要“Myapp”和“Android”这两个词来进行服务器端检查。 【参考方案1】:

也许 Paypal 无法识别您的用户代理分辨率并将大小保留为 1 个像素。

【讨论】:

顺便说一句,现在我的最终用户代理是:Mozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0移动 Safari/533.1; MyApp 我需要“Myapp”和“Android”这两个词来进行服务器端检查,所以现在 UA 有了它们并且 PayPal 可以工作。 我不知道 Paypal 在他们的服务器端是如何做的,但我知道那里有出售用户代理字符串和分辨率(以及移动设备的其他属性)之间的映射的数据库。如果这是他们使用的,则需要客户端提供更完整和知名的用户代理才能正确识别它。 如果他们至少以某种方式呈现小/大网页会很好【参考方案2】:

确保 webview 是

android:layout_

而不是包装内容。

这将解决问题。

【讨论】:

以上是关于WebView 中的 Paypal = 白页(不是 https 问题)的主要内容,如果未能解决你的问题,请参考以下文章

WebView 显示白页,但事件正在运行

加载时在webview中显示白页(PDF url)url android

Webview android中的Paypal付款页面布局损坏

Webview android中的Paypal支付页面布局损坏可能css未正确加载?

微信小程序 webview缓存

微信小程序嵌套webview页面条件控制是不是返回小程序