首页 > 解决方案 > 如何在没有 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()
    }

标签: swift4xcode9

解决方案


推荐阅读