问题描述:
在使用WebView请求目标地址时,服务器要求带Refer字段,于是通过WebView提供的loadUrl(String url, Map<String,String> additionalHttpHeader)方法来实现,代码如下:
Map<String, String> extraHeaders = new HashMap<>();
String referer = "http://xxxx.com"
extraHeaders.put("Referer", referer);
view.loadUrl(payinfo.getWebUrl(), extraHeaders);
在很多手机上运行正常,但是在4.4的手机上出现请求被服务端拒绝的情况,分析后发现是4.4手机上请求头里添加的Referer字段丢失了。
解决办法
没想到好的解决办法,Google了一下,发现一个韩国网站上有人遇到过这个问题并分享了解决方法,原贴如下:传送门,代码如下:
Map<String, String> extraHeaders = new HashMap<>();
String referer = "http://xxxx.com"
if (("4.4.3".equals(android.os.Build.VERSION.RELEASE))
|| ("4.4.4".equals(android.os.Build.VERSION.RELEASE))) {
extraHeaders.put("Referer ", referer);
} else {
extraHeaders.put("Referer", referer);
}
extraHeaders.put("Referer", referer);
view.loadUrl(payinfo.getWebUrl(), extraHeaders);
注:发现了吗,就是在Referer字段后面加了一个空格。:)
网友评论