[Swift] Я не могу получить данные JSON по указанному URL c - PullRequest
1 голос
/ 12 апреля 2020

Существует два вида URL

  1. http://www.mocky.io/v2/5e91af4b3300008300e9cfd1 ( это я и сделал )

  2. http://183.111.148.229/mob_json/mob_json.aspx?nm_sp=UP_MOB_CHECK_LOGIN&param=1000 | 1000 | 1 ( Мне нужно получить данные по этому URL )

Только номер 1. URL возвращает JSON данные , даже если они имеют одинаковую структуру. Я не смог найти способ решить эту проблему.

это мой код администратора сети

import Foundation
class NetworkManager: ObservableObject {



@Published var posts = [Post]()


func fetchData() {
    if let url = URL(string: "http://www.mocky.io/v2/5e91af4b3300008300e9cfd1") {
        let session = URLSession(configuration: .default)
        let task = session.dataTask(with: url) { (data, response, error) in
            if error == nil {
                let decoder = JSONDecoder()
                if let safeData = data {
                    do {
                        let results = try decoder.decode(Results.self, from: safeData)

                        DispatchQueue.main.async {
                            self.posts = results.Table
                        }   
                    } catch {
                        print(error)
                    }
                }
            }
        }
        task.resume()
    }

}
}

и моя модель данных поста

import Foundation

struct Results: Decodable {
let Table: [Post]
}

struct Post: Decodable, Identifiable {
var id: String {
    return CD_FIRM
}
let CD_FIRM: String
let NM_FIRM: String
let CD_USER: String
let NM_USER: String
}

Может кто-нибудь может помочь мне за эту проблему? Я хочу получить JSON данные с URL-адреса 2.

, пожалуйста, помогите мне =)

1 Ответ

0 голосов
/ 12 апреля 2020

Похоже, проблема с вашим вторым URL - это каналы | в конце. Один из способов избежать этой проблемы - использовать URLComponents

. Вставьте это в начале fetchData

var urlComponents = URLComponents()
urlComponents.scheme = "http"
urlComponents.host = "183.111.148.229"
urlComponents.path = "/mob_json/mob_json.aspx"
urlComponents.queryItems = [
    URLQueryItem(name: "nm_sp", value: "UP_MOB_CHECK_LOGIN"),
    URLQueryItem(name: "param", value: "1000|1000|1")
]

, а затем получите URL-адрес из компонентов

if let url =  urlComponents.url {
    let session = URLSession(configuration: .default)
    //... same as before
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...