如何将数据上传到API?

时间:2018-04-23 12:31:58

标签: ios swift api upload

我需要将数据上传到API。参数:
ScreenShot
我有下一个代码:

static func uploadNewInfo(uploadData: Data) {
        if let url = URL(string: TaskManager.httpString + "sett_eic.htm") {
            var request = URLRequest(url: url)
            request.httpMethod = "POST"
            request.httpBody = uploadData
            request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
            let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
                if error == nil {
                    print("uploaded")
                }
            }
//            let task = URLSession.shared.uploadTask(with: request, from: uploadData) { (data, response, error) in
//                if error == nil {
//                    print("uploaded")
//                }
//            }
            task.resume()
        }
    }   

但回复是"500 Internal Server Error: Expected data not present\r\n"
我不明白如何上传这些数据。我读了一些关于如何上传图片的答案,但不了解它。我的数据不是图像。它的字节,描述名称,状态等。

更新

这是请求在浏览器中的显示方式:
Screenshot2
部分与PRF64 ... - uploadData

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

func uploadNewInfo(uploadData: Data) {
    let boundry = "**********"
    if let url = URL(string: TaskManager.httpString + "sett_eic.htm") {
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        //        request.httpBody = uploadData
        request.addValue("multipart/form-data; boundary=\(boundry)", forHTTPHeaderField: "Content-Type")
        var dataForm = Data()
        dataForm.append("\r\n--\(boundry)\r\n".data(using: .utf8)!)
        dataForm.append("Content-Disposition: form-data; name=\"param1\";\r\n\r\n10001".data(using: .utf8)!)
        dataForm.append(uploadData)
        dataForm.append("\r\n--\(boundry)--\r\n".data(using: .utf8)!)
        request.httpBody = dataForm

        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            if error == nil {
                print("uploaded")
            }
        }
        task.resume()
    }
}

如果有效,请告诉我。)

答案 1 :(得分:0)

您可以使用 Alamofire

 func UploadData(uploadData: Data){
let paramter = ["data":Data]
let Header = ["Authorization":"Bearer ..."]

Alamofire.request("", method: .post, parameters: parameter, headers: Header).responseJSON(completionHandler: { (response) in

guard let value = response.result.value as? NSDictionary

}