macOS, iOS

[iOS] WKWebView JSON Response를 HTML에서 response만 따오는 방법

SweetDev 2020. 3. 8. 01:24

내 시간 돌려줘...

 

결론은! 이렇게 해야 할 경우가 생기면, 이동하는지 여부를 

 

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")

          }

        }

      })

 

이렇게 해서 받아오면 된다. 고생했다 나자신...