json - 使用 URLSession 从服务器获取数据

标签 json swiftui decodable urlsession

大家。我有个问题。我想不通。我想从我的服务器获取数据( JSON 数组),但它无法正常工作。它什么也没显示。 HTTP header : text/plain 。我使用此来源作为示例:https://medium.com/@rbreve/displaying-a-list-with-swiftui-from-a-remote-json-file-6b4e4280a076 。这是我的代码和数据:

import Foundation
import SwiftUI
import Combine

struct Medewerker: Codable, Identifiable, Hashable {
    public var id : Int
    public var naam: String
    public var voornaam: String              
}
struct SwiftUIView2: View {
       @ObservedObject var fetcher = MedewerkerFetcher()
    var body: some View {
        VStack {
            List(fetcher.medewerker) { medewerker in
                VStack (alignment: .leading) {
                    Text(medewerker.naam)
                    Text(medewerker.voornaam)
                        .font(.system(size: 11))
                        .foregroundColor(Color.gray)
                }
            }
        }

    }

}

struct SwiftUIView2_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView2()
    }
}
public class MedewerkerFetcher: ObservableObject {

    @Published var medewerker = [Medewerker]()

    init(){
        load()
    }

    func load() {
        let url = URL(string: "http://anwin.be/src/public/medewerker")!
    var request = URLRequest(url: url)
        request.addValue("text/plain", forHTTPHeaderField: "Accept")
        URLSession.shared.dataTask(with: request) {(data,response,error) in
            if let mimeType = response?.mimeType, mimeType == "text/plain"{
                do {
                    if let d = data {
                        let decodedLists = try JSONDecoder().decode([Medewerker].self, from: d)
                        DispatchQueue.main.async {
                            self.medewerker = decodedLists
                        }
                    }else {
                        print("No Data")
                    }
                } catch {
                    print ("Error")
                }
           } 

        }.resume()

    }
}
Data. Json from server: 
[
    {
        "id": 1,
        "naam": "Fanoberov",
        "voornaam": "Andre"
    },
    {
        "id": 2,
        "naam": "Kunitski",
        "voornaam": "Dzmitry"
    },
    {
        "id": 7,
        "naam": "Karim",
        "voornaam": "Nassar"
    }
]

你能帮我一下吗? 谢谢。

最佳答案

错误是:

{Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"},NSErrorFailingURLKey=http://dtcws.azurewebsites.net/ShowImg.aspx?params=dtc_376_0_True_False_22,NSLocalizedDescription=无法加载资源因为应用程序传输安全策略要求使用安全连接。})

你必须更改你的info.plist 添加此:

 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

关于json - 使用 URLSession 从服务器获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59137530/

相关文章:

javascript - 如何提取数组中特定条目的值?

swift - 使用 SwiftUI 基于用户输入的动态文本字段

json - swift 可编码 : Decode different array of items with same root objects

ios - 如何手动对选定的按键进行解码,以及如何利用快速解码功能自动解码呢?

php - 数据未正确传递到 php 服务器

jquery - JTemplates序列化

jquery - 如何添加/插入 json data[0] 等到 jquery $ ('td' ).css?

swiftui - SwiftUI 中 DragGesture 和 ScrollView 的交互

function - SwiftUI:点击切换并且变量状态发生变化时调用函数

json - 未加密的容器 JSON Swift 可解码