網(wǎng)上雖然文檔比較少,但是還是有一些的,相同的我就不重復(fù)了
一般問題找他們客服,
我寫一下客服填不了的坑:
提示參數(shù)格式錯誤:
因為ios推出wkwebview,然后wkwebview有個坑是:post請求,丟失body數(shù)據(jù)。
直接寫解決方法:
新建JSPOST.html(stack overflow上的解決方法)
<html>
<head>
<script>
//調(diào)用格式: post('URL', {'key': 'value'});注意這里,網(wǎng)上有些地方寫著是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;
//這里是提交的表單數(shù)據(jù)
_body = [NSString stringWithFormat: @"'jsonRequestData':'%@'", loadParam];
JJLog(@"%@",_body);
// 獲取JS所在的路徑
NSString *path = [[NSBundle mainBundle] pathForResource:@"JSPOST" ofType:@"html"];
// 獲得html內(nèi)容
NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// 加載js
[self.webView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];
然后調(diào)用就是wkwebview調(diào)用 js來提交表單
#pragma mark - WKNavigationDelegate
// 加載完成的代理方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
// 判斷是否需要加載(僅在第一次加載)
if (fist) {
_body = [NSString stringWithFormat: @"'jsonRequestData':'%@'", param];
注意這里的格式,別用oc的",要用js的',否則還是會出現(xiàn)格式不對,開始懷疑人生233,param就是生成的報文組織,報文內(nèi)容的問題,對照官方文檔http://121.15.180.72/OpenAPI2/API/PWDPayAPI4.aspx#jvch3
// 發(fā)送POST的參數(shù)
NSString *postData = _body;
// 請求的頁面地址
NSString *urlStr = _url;
// 拼裝成調(diào)用JavaScript的字符串
NSString *jscript = [NSString stringWithFormat:@"post('%@',{%@});", urlStr, postData];
NSLog(@"Javascript: %@", jscript);
// 調(diào)用JS代碼
[self.webView evaluateJavaScript:jscript completionHandler:^(id object, NSError * _Nullable error) {
}];
fist = no;
}
}
(ps:一網(wǎng)通在ios8以下是使用uiwebview的,注意兼容)
當然ios8以上使用uiwebview是會出錯的(出錯的原因是ios8以上,安全鍵盤是默認調(diào)用wkwebview的方法,如果使用uiwebview的話,就會向uiwebview響應(yīng)wkwebview的方法,找不到wkwebview的方法,然后就報錯了),你必須要用wkwebview。所以基本上你是繞不開wkwebview的post