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 を String ではなく URL タイプとして渡そうとしましたが、まだ機能しません