网上虽然文档比较少,但是还是有一些的,相同的我就不重复了
一般问题找他们客服,
我写一下客服填不了的坑:
提示参数格式错误:
因为ios推出wkwebview,然后wkwebview有个坑是:post请求,丢失body数据。
直接写解决方法:
新建JSPOST.html(stack overflow上的解决方法)
<html>
<head>
<script>
//调用格式: post('URL', {'key': 'value'});注意这里,网上有些地方写着是post('URL', {"key": "value"});反正我是踩过这个坑了
function post(path, params) {
var method = "post";
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
</script>
</head>
<body>
</body>
</html>
//webView的请求配置
//请求的页面地址
_url = outerURL;
//这里是提交的表单数据
_body = [NSString stringWithFormat: @"'jsonRequestData':'%@'", loadParam];
JJLog(@"%@",_body);
// 获取JS所在的路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"JSPOST" ofType:@"html"];
// 获得html内容
NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// 加载js
[self.webView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];
然后调用就是wkwebview调用 js来提交表单
#pragma mark - WKNavigationDelegate
// 加载完成的代理方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
// 判断是否需要加载(仅在第一次加载)
if (fist) {
_body = [NSString stringWithFormat: @"'jsonRequestData':'%@'", param];
注意这里的格式,别用oc的",要用js的',否则还是会出现格式不对,开始怀疑人生233,param就是生成的报文组织,报文内容的问题,对照官方文档http://121.15.180.72/OpenAPI2/API/PWDPayAPI4.aspx#jvch3
// 发送POST的参数
NSString *postData = _body;
// 请求的页面地址
NSString *urlStr = _url;
// 拼装成调用JavaScript的字符串
NSString *jscript = [NSString stringWithFormat:@"post('%@',{%@});", urlStr, postData];
NSLog(@"Javascript: %@", jscript);
// 调用JS代码
[self.webView evaluateJavaScript:jscript completionHandler:^(id object, NSError * _Nullable error) {
}];
fist = no;
}
}
(ps:一网通在ios8以下是使用uiwebview的,注意兼容)
当然ios8以上使用uiwebview是会出错的(出错的原因是ios8以上,安全键盘是默认调用wkwebview的方法,如果使用uiwebview的话,就会向uiwebview响应wkwebview的方法,找不到wkwebview的方法,然后就报错了),你必须要用wkwebview。所以基本上你是绕不开wkwebview的post
网友评论