2

我正在尝试制作一个脚本,在 POST 请求中以 json 文档的形式发送数据。为此,我使用以下代码:

struct RequestModel: Codable {
    var api_key: String
    var service_code: String
    var description: String
    var media_url: String
    var attribute: [String: String]
    var long: String
    var lat: String

    init(api_key: String, service_code: String, lat: String, long: String, media_url: String, description: String, attribute: [String: String]) {
        ...
    }
}

class ClassName {
    func send(lat: Double, long: Double, comment: String, photoURL: String, photoID: String) {

        let sendReqeust = RequestModel(api_key: "123456789", service_code: "987654321", lat: lat, long: long, media_url: photoURL, description: comment, attribute: ["request_type":"example"])

        print("URL in function \(sendReqeust.media_url)")

        guard let uploadData = try? JSONEncoder().encode(sendReqeust) else {
            return
        }
        print(String(data: uploadData, encoding: .utf8)!)

        let url = URL(string: "http://example.com")!
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.httpBody = uploadData

        var responseToken: String = ""

        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            ...
        }
        task.resume()
    }   
}

问题出在 mediaURL 上。当我对 url 进行编码时,它会将转义字符添加到 URL 字符串中。

第一次打印产量

https://example.com/

然而,编码后的打印产生:

https:\/\/example.com\/

如何从 url 中删除转义字符?包含转义字符的 url 无法正确解析。

  • 我尝试将其添加为标头的一部分,但在对邮递员和应用程序进行测试后,我确定需要通过请求正文传递 url。
  • 我曾尝试设置编码键,但这会导致编码时不包含 url。
  • 我尝试将 URL 作为 URL 类型而不是 String 传递,但它仍然不起作用
4

0 回答 0