Saya mencoba melakukan permintaan HTTP POST di Swift yang akan mengirim beberapa data ke server saya menggunakan file PHP, tetapi macet dengan kesalahan

Utas 1: Kesalahan fatal: Secara tidak terduga ditemukan nihil saat membuka bungkus nilai Opsional

token dan selectedAreaNames (kesalahan ada di baris pertama) hanyalah string biasa. Apa yang bisa menjadi masalah?

let url = URL(string: "https://xxxxxxx.xxx/register.php/\(token)|\ (selectedAreaNames)")! //error is here...
var request = URLRequest(url: url)
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
    if let error = error {
        print("error: \(error)")
    } else {
        if let response = response as? HTTPURLResponse {
            print("statusCode: \(response.statusCode)")
        }
        if let data = data, let dataString = String(data: data, encoding: .utf8) {
            print("data: \(dataString)")
        }
    }
}
task.resume()
0
hoshenk13 20 September 2019, 19:25

1 menjawab

Jawaban Terbaik

Dengan asumsi seperti itulah tampilan URL Anda, Anda dapat melakukan:

let url = URL(string: "https://xxxxxxx.xxx/register.php")!
    .appendingPathComponent(token + "|" + selectedAreasNames)

Itu akan persen lolos dari bagian URL tersebut (termasuk |).


Meskipun demikian, ini adalah format yang sangat tidak biasa untuk permintaan POST, yang biasanya memiliki data yang diposting di dalam badan permintaan, tidak hanya ditambahkan sebagai komponen jalur lain dari URL. Dan jika ini adalah permintaan GET, di mana parameter ditambahkan ke URL, Anda biasanya akan melihat ini setelah ? di URL, memisahkan jalur permintaan dari kueri. Dan struktur sederhana TOKEN|VALUES ini juga merupakan struktur kueri yang tidak biasa.

0
Rob 21 September 2019, 07:36