SwiftUI: WebView не загружает определенную страницу

#ios #webview #swiftui

#iOS #webview #swiftui

Вопрос:

Я пытаюсь загрузить URL-адрес в свой WebView, он хорошо работает с «https://www.google.com «, но это не работает с «https://www.sl.se «. Он показывает «Не найден, ошибка HTTP 404: запрошенный ресурс не найден».

введите описание изображения здесь

Странно то, что, если я Google «sl.se » на странице Google нажмите на sl.se , тот самый «www.sl.se » можно загрузить WebView. Кто-нибудь знает причину?

contentView.swift

 // ContentView.swift

struct ContentView: View {
    @State private var shouldRefresh = false
        var body: some View {
            VStack{
                Button(action: {
                    self.shouldRefresh.toggle()                    
                }){
                    Text("Reload")
                }
                WebView(url: nil, reload: $shouldRefresh)
            }
        }
}
  

WebView.Swift

 // WebView.swift

import WebKit
import SwiftUI

struct WebView: UIViewRepresentable{

    var url: URL?     // optional, if absent, one of below search servers used
    @Binding var reload: Bool

    private let urls = [URL(string: "https://google.com/")!, URL(string: "https://www.sl.se")!]
    private let webview = WKWebView()

    fileprivate func loadRequest(in webView: WKWebView) {
        if let url = url {
            webView.load(URLRequest(url: url))
        } else {
            let index = Int(Date().timeIntervalSince1970) % 2
            print("load: (urls[index].absoluteString)")
            webView.load(URLRequest(url: urls[index]))
        }
    }

    func makeUIView(context: UIViewRepresentableContext<WebView>) -> WKWebView {
        loadRequest(in: webview)
        return webview
    }

    func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<WebView>) {
        if reload {
            loadRequest(in: uiView)
            DispatchQueue.main.async {
                self.reload = false     // must be async
            }
        }
    }
}
  

Ответ №1:

В вашем коде нет ничего плохого. Вам просто нужно удалить www из своего URL. попробуйте https://sl.se , и это сработает.