Swift 3 Как отправить составной почтовый запрос с помощью Vapor

Я использую пар для размещения изображений для своего приложения. У меня есть следующий код для получения изображения и его печати.

drop.post("saveArt") { request in
if let contentType = request.headers["Content-Type"], contentType.contains("image/png"), let bytes = request.body.bytes {
    let image = NSImage(data: Data(bytes))
    print(image)
    return JSON(["Testawesome":"awesome123"])
}
return JSON(["test":"123"])
}

Как я могу отправить составной запрос, используя только Swift? Вот текущий код почтового запроса, который я использую.

 let tiffData = imagetosend?.tiffRepresentation
 let imageRep = NSBitmapImageRep(data: tiffData!)
 let image_data = imageRep?.representation(using: .JPEG, properties: [:])
 print("Hi")

 let url = NSURL(string: "http://localhost:8080/getArt")

let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"


//define the multipart request type

request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")


let body = NSMutableData()

let mimetype = "image/png"

//define the data post parameter




body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(image_data!)
body.append("\r\n".data(using: String.Encoding.utf8)!)


request.httpBody = body as Data



let session = URLSession.shared


let task = session.dataTask(with: request as URLRequest) {
    (
    data, response, error) in

    guard let _:NSData = data as NSData?, let _:URLResponse = response  , error == nil else {
        print(error?.localizedDescription)
        return
    }

    let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
    print(dataString)

}

task.resume()

person James Ikeler    schedule 21.11.2016    source источник
comment
Вы хотите отправить эти данные из приложения Vapor, OSX или iOS?   -  person Quver    schedule 23.11.2016
comment
Вы можете использовать Alamofire, как указано в этом ответе stackoverflow.com/a/32204889/3803872   -  person Quver    schedule 23.11.2016
comment
Ответ не помог, я отправлю тот, который у меня сработал.   -  person James Ikeler    schedule 24.11.2016


Ответы (1)


Я решил это с помощью этого метода alamofire.

Alamofire.request("YOUR URL", method: .post, parameters: parm, encoding: JSONEncoding.default).responseJSON(completionHandler: { json in
        // If you want to return json.
        print(json)
    })
person James Ikeler    schedule 23.11.2016
comment
Было бы интересно узнать, как вы разместите этот код с помощью Alamofire на машине Linux. Я добавил Alamofire версии 4 в свой проект Vapor, но не смог собрать проект на Vapor.cloud из-за отсутствия модуля SystemConfiguration в NetworkReachabilityManager.swift. (Код, конечно, работал на моем Mac) - person Gabriel; 24.10.2017