Получение html от сервера и его передача для открытия в WKWebView


#1

Уважаемые форумчане! Прошу помощи в следующем вопросе. Я отправляю POSTзапрос с логином и паролем пользователя на сервер. Сервер мне отдает response 200 и data со сгенерированным html, который я должен принять и передать в WKWebView, чтобы пользователь попал в свой личный кабинет. Замечу, сервер мне не отдает ссылку на личный кабинет пользователя, а отдает сгенерированный html в data. Так вот вопрос: в каком формате мне этот HTML принять, как распарсить, если нужно и в каком формате отдать в WKWebView?

Я пробовал принять data как NSAttributedString, но в таком формате я не могу его передать в WebView для отображения личного кабинета. Что делать, уважаемые знатоки? Нужно ли потом данные переводить в String и как это сделать?


#2

Вопрос не сложный, но надо в коде это тестить и ковырять. Может ты пример сделаешь и на гит выложишь с 1 формой. Потому что могу скинуть расширения которые писал для конвертации, но фиг знает решат ли они твою проблему.


#3

Да там и выкладывать нечего, простой post запрос. Приходит дата в виде html в ответ. Так вот не знаю в каком формате ее принять и передать в Webview. Пробовал принять в виде NSAttributedStribg, но такой формат потом не принимает WebView. Вернее принимает, но отображает в виде текста, так как в html добавляются свои аттрибуты с префиксом NS. Пробовал принимать данные в формате String, принимаю и потом в String и передаю в WebView. Тут уже лучше. Уже виден скелет сайта, правда без стилей CSS и ссылки все не рабочие. Но хоть что-то отображается во view. Англоязычные сайты и stackoverflow тоже не дали ответа на мой вопрос. При чем, я так понимаю, что такая возможность залогиниться на сайте весьма широко применяется. Может alamofire нужно использовать и там это будет проще. Тогда ткните где почитать об этом можно.


#4

Как строку ее получите в utf8 и посмотрите что будет в консоли. Предположу что будет текст html странички и ее уже можно грузить и отображтаь в компоненте.


#5

Пока именно так и делаю. Страничка в виде скелета отображается, но без стилей CSS. Предполагаю, что CSS отдельным запросом тянуть надо. Но мне кажется, что это костыль, и все должно быть проще.


#6

а почему ты в самой webview запрос не открываешь?


#7

А как это делать? Я с этим еще не сталкивался?


#8

webView.loadRequest(request)
где request - URLRequest (если не ошибаюсь).


#9

все правильно

guard let url = URL(string: urlPath) else { return }
let request = URLRequest(url: url)
homepage.load(request)

urlPath стринга для запроса,
homepage

@IBOutlet weak var homepage: WKWebView!

#10

Ребята, всем спасибо :slight_smile: во вьюхе все взлетело, все открывается и логинится. Прям всех обнимаю :slight_smile:


#11

напишите как решили проблему. вдруг кому то пригодится


#12

Открыл запрос в WebView, как посоветовали и все подгрузилось отлично