Как запросить рабочий стол в Swift программно (без UIWebView)?

В HTML-коде настольного сайта есть ссылка на миниатюру «apple-touch-icon» в заголовке, а на мобильном — нет. Мне просто нужно получить этот html и проанализировать.

Итак, как запросить рабочий стол сайта (может быть, через URLRequest, URLSession или что-то еще)?

p.s. Я обнаружил, что мне нужно изменить значение строки User-Agent, но опять же, я не нашел, как это сделать в Swift.


person Gleb Kalachev    schedule 08.01.2018    source источник
comment
без webview?почему без webview?вам нужен только html для ссылки?   -  person Muhammad Zohaib Ehsan    schedule 08.01.2018
comment
Да. Мне нужно сохранить в HTML-коде ссылку на эскиз сайта. Это все. у меня не отображается страница   -  person Gleb Kalachev    schedule 08.01.2018


Ответы (2)


Зависит от логики сервера, но в большинстве случаев достаточно настроить заголовок userAgent в вашем запросе:

let url = URL(string:"https://google.com")!
var request = URLRequest(url: url)
let userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"
request.addValue(userAgent, forHTTPHeaderField: "User-Agent")

let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
 // Process reponse
}
task.resume()
person MichaelV    schedule 08.01.2018

WKWebView должен решить вашу проблему — вы можете определить его в своем коде. Сделай это:

var webView : WKWebView!
override func loadView() {
    super.loadView()

    let config = WKWebViewConfiguration()
    webView = WKWebView(frame: self.view.frame, configuration: config)
    self.webView!.uiDelegate = self
    webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"
    //load URL here
    let url = NSURL(string: "https://stackoverflow.com/")!
    webView.load(URLRequest(url: url as URL))
    self.view.addSubview(webView)


}
person Yaco Zaragoza    schedule 08.01.2018
comment
Для получения информации об изменении пользовательского агента в swift см. stackoverflow .com/questions/39271245/how-to-change-user-agent - person Yaco Zaragoza; 08.01.2018