webview post请求数据丢失或错误 的问题

说明:

    进行webview post请求出错。这些参数通过网页表单请求没有问题,但是放到webview里面post请求就出错,最后查到的原因是在webview请求到网页时候把参数中的+号给丢失了。

问题:

MIIEFAYJKoZIhvcNAQcCoIIEBTCCBAECAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCCAw4wggMKMIIB8qADAgECAgUQeDl1gzANBgkqhkiG9w0BAQUFADAhMQswCQYDVQQGEwJDTjESMBAGA1UEChMJQ0ZDQSBPQ0ExMB4XDTE3MDIxNDA5MTAxOVoXDTE5MDMwMjA3MTM0M1owZDELMAkGA1UEBhMCY24xEjAQBgNVBAoTCUNGQ0EgT0NBMTEMMAoGA1UECxMDQk9DMRgwFgYDVQQLEw9Pcmdhbml6YXRpb25hbDIxGTAXBgNVBAMTEDk1NTY2U1owMDAwMDE3MjkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALJtyXFzPLWdQl4T5rF1WVzMeLNxhSQcng4pLRGE6lBlJfinKxTBJkrE5T+A0Mq0hDUq7vQNBS40FMkYwAVeJhMvef5KH60uRNXbiiUdicyMksCdIKrduHOfQYqlGUxCXwks5dM9LQkSVsDbTM+aKa5BpuY43jfsjrIWJH4wnsBVAgMBAAGjgYkwgYYwHwYDVR0jBBgwFoAU0dvpiILl3RqPTKoAjL588qsb9tkwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5jZmNhLmNvbS5jbi9SU0EvY3JsNjAzNi5jcmwwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBTWwUlbjC8DolJQe6s8dzbtJsal9DANBgkqhkiG9w0BAQUFAAOCAQEAjHpsjREKBfUkZ1OHNM3OnOgVQjUtiyPDZrKUvI6bjAF5s0P4VMlghuv1xs0HGlDX5SPwZ2xE64df+LH0jPJfIzHUTBWH2kWboiuQCjrMWslYusj4y+UbyXNgQrLKNIOA6CnKVX7RTLycWkaCHXpPQwl680deHPn8W8tmBb0cmKYhWx+tm7FvCGrQ//As+hXkEtD0aQV36Xblzh0e8hVxWQ+Wg6o9L3RoEk74wKrSFL7ZxiC+0YitbcUmpXuPOdlUNAd42a8915ZKkXFRqetjbNlivS5wR/3jTo0v+flKnYxb1/f7zD4qQbkr+OaJpD4nM1dIjy86x+QZBbP0IRHVsDGBzzCBzAIBATAqMCExCzAJBgNVBAYTAkNOMRIwEAYDVQQKEwlDRkNBIE9DQTECBRB4OXWDMAkGBSsOAwIaBQAwDQYJKoZIhvcNAQEBBQAEgYBp53RmmHSDnWx1cfU98S6EppUZGo+YI4cezfTNh60mt2dqnCo/agZxq2f83ljJVFmvpDKvFGroFIj9cGFf+PfVu03SQXv7BuS2Yn9LdfpWT5sgozlCKBmZd/0BMIqzqVfatcxO43ueBF3c1f/enbv79IQNuBCLy4doXODlR/V16A==

就是把这个参数中的+号给丢掉了。

解决:

    所以android和ios在post打开网页的时候一定要把参数给URLEncoder.encode(entry.getValue(), "utf-8")一下,确保参数完整性。

代码:

//需要post的数据是map形式给我的,需要把map数据给变成key=value格式,拼接在一起


//遍历map转换成建设银行需要的格式
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> entry : map.entrySet()) {
	try {
		sb.append(entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), "utf-8"));//这里吧value值网页URLEncoder.encode编码一下,确保传输时候数据完整性
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	}
	sb.append("&");
}

//去掉最后一个&
String params = sb.toString();
params = params.substring(0, params.length() - 1);

Log.e("webSdk", "请求参数-中国银行:" + params);

webView.postUrl(intentUrl, params.getBytes());//post请求

猜你喜欢

转载自blog.csdn.net/u012246458/article/details/80351668
今日推荐