[iOS] WKWebView JSON Response를 HTML에서 response만 따오는 방법
내 시간 돌려줘...
결론은! 이렇게 해야 할 경우가 생기면, 이동하는지 여부를
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
함수를 통해서 미리 받아오고, Response는 다시 Alamofire로 api call을 보내서 JSON형태로 리스폰스를 받아오는게 훨씬 편하다는 것이었다.
만약 꼭! HTML에서 긁어오고 싶다면 'SwiftSoup' 라이브러리를 쓰면 된다.
https://github.com/scinfu/SwiftSoup
scinfu/SwiftSoup
SwiftSoup: Pure Swift HTML Parser, with best of DOM, CSS, and jquery (Supports Linux, iOS, Mac, tvOS, watchOS) - scinfu/SwiftSoup
github.com
webView.evaluateJavaScript("document.documentElement.innerHTML", completionHandler: { res, error in
if let fingerprint = res {
do {
let text = fingerprint as! String
let doc: Document = try SwiftSoup.parse(text)
let decoder = JSONDecoder()
let response = try! decoder.decode(SendKakaoResponse.self, from: Data((try! doc.text()).utf8))
} catch let Exception.Error(type, message) {
print(message)
} catch {
print("error")
}
}
})
이렇게 해서 받아오면 된다. 고생했다 나자신...