我正在尝试制作一个脚本,在 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 传递,但它仍然不起作用