swift4 - 如何在没有 alamofire 且不将图像转换为字符串(base 64)的情况下在 api 中发送纯图像?
问题描述
我正在尝试在没有 alamonfir 的情况下在 API 中发送图像,也没有转换为字符串。
下面是我的代码
func postRequest(username: String, password: String, completion: @escaping ([String: Any]?, Error?) -> Void) {
//func abc() {
//var username = "cru_user@app.com"
//var password = "password"
//declare parameter as a dictionary which contains string as key and value combination.
let parameters = ["first_name":name,"last_name":"mubeen","user_contact_number":"923344561223","city":"isb","country":"pak", "address": "texla", "profile_img": (pp),"cover_img":(pp)] as [String : Any]
// let parameters = ["email": username, "password": password]
//create the url with NSURL
let url = URL(string: baseURL+"dashboard/profile/updated")!
//create the session object
let session = URLSession.shared
//now create the Request object using the url object
var request = URLRequest(url: url)
request.httpMethod = "POST" //set http method as POST
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // pass dictionary to data object and set it as request body
} catch let error {
print(error.localizedDescription)
completion(nil, error)
}
//HTTP Headers
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjA0M2UzZTNkZTIwN2YyNTBmZDkxZWRjOWVmZWM4NWE0YzJlYWE2Mzc2OWNiYWFkNmI3YjhiNjYzYTIyZDJiYzYyMDQxNzI4ZmU0NTYzMGM4In0.eyJhdWQiOiIxIiwianRpIjoiMDQzZTNlM2RlMjA3ZjI1MGZkOTFlZGM5ZWZlYzg1YTRjMmVhYTYzNzY5Y2JhYWQ2YjdiOGI2NjNhMjJkMmJjNjIwNDE3MjhmZTQ1NjMwYzgiLCJpYXQiOjE1NzUyNjgxMzAsIm5iZiI6MTU3NTI2ODEzMCwiZXhwIjoxNjA2ODkwNTMwLCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.pL6rrq4Hta1Sh4lqc6WXw39mgDZ7x9aqk_-u2-EycZtFCyRFiMctSRPggt3kV3lU4uJZvuSDMXO6saiKHDSftGr6IvXMaj9Rpjqah8AJGni5FFBBL978ZRPuAnqUUDVztT7ADH3kS7Nj6BVly63nQ8pc_m5c-V_bwe_wKlXk7oFuSvind4oIefLIfuam2HxYHJ0jn-wuZ3bu48N0R1L5h3kWhP3Ex-EBVJ1-WVryb1UeaBEnlLECVe-BuvaHMcr9MAPJP8jY2vIbLpn14vGAhW8co01T-zvOVU1NhnIuwZt9ZaruMnQkHTAh6DyGm6wguhL18_do3oC6JFPXqrl9-XFAFumjjRpLoAqm9j1lFfKNDs_5ryvNp9REcnoo9gqcC8sCw8JMQ5QjJVGNrYds8HBDvM4D6knbco87mDE_12UGWSmfQvZv445LHy-ufMkNM1I3uZD1r9CY3EsITCzUokU-i7n6ogrg0oIgZWJ1j5aXevCVGQ1naSKEROknvvRcyAWlMTyiexElUWnUXo9qNS6pDnSY4idPpXXLn3E2OfFgfUh0JyXDk4_H1nXRdYltYXe8q9t0gSabZ9wWE0XPaHJUy-YeER7nkTpQQk7wFNZNSXwPC_tlA4nKfTP4jlQ32BH1uX_HUCziBHguQpqUMNkSUoJt4J3H6GRA-hDKZ-o"
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
//create dataTask using the session object to send data to the server
let task = session.dataTask(with: request, completionHandler: { data, response, error in
guard error == nil else {
completion(nil, error)
return
}
guard let data = data else {
completion(nil, NSError(domain: "dataNilError", code: -100001, userInfo: nil))
return
}
do {
let jsonString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String
//create json object from data
guard let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] else {
completion(nil, NSError(domain: "invalidJSONTypeError", code: -100009, userInfo: nil))
return
}
print(json)
//let user = json[]
} catch let error {
print(error.localizedDescription)
completion(nil, error)
}
})
task.resume()
}
解决方案
推荐阅读
- probability - 是否可以使用基于整数的概率进行泊松分布?
- dart - Flutter setState double 值没有变化?
- html - 如何使子高度相对于其父高度-Css
- java - 根据另一个函数(Kafka)的结果调用函数
- java - 如何从 2D 数组中的特定位置获取字符并将其存储在另一个变量中?
- python - Visual Studio Code 集成终端未使用正确的 Anaconda 环境
- asp.net - Azure 网站部署失败 - 发现同一依赖程序集的不同版本之间存在冲突
- ram - Google Colab 中的内存使用量已接近极限
- rest - 休息助手 codeceptjs 和 docker
- c# - 是否可以在单击按钮时为 GridView 中的项目生成水晶报表?