我正在尝试发送照片,该照片将从我的应用程序中的相机或照相馆拍摄。我搜索了整个站点,发现了一些有用的代码。然后,我对其进行了一些自定义。
let imageData = UIImageJPEGRepresentation(myImageView.image!, 1)
if imageData != nil{
let request = NSMutableURLRequest(url: NSURL(string:"http://app.avatejaratsaba1.com/api/Ticket/SendTicket")! as URL)
var session = URLSession.shared
request.httpMethod = "POST"
let boundary = NSString(format: "---------------------------14737809831466499882746641449")
let contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
// println("Content Type \(contentType)")
request.addValue(contentType as String, forHTTPHeaderField: "Content-Type")
let body = NSMutableData()
// Title
body.append(NSString(format: "\r\n--%@\r\n",boundary).data(using: String.Encoding.utf8.rawValue)!)
body.append(NSString(format:"Content-Disposition: form-data; name=\"title\"\r\n\r\n").data(using: String.Encoding.utf8.rawValue)!)
body.append("Hello World".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
// Image
body.append(NSString(format: "\r\n--%@\r\n", boundary).data(using: String.Encoding.utf8.rawValue)!)
body.append(NSString(format:"Content-Disposition: form-data; name=\"profile_img\"; filename=\"img.jpg\"\\r\n").data(using: String.Encoding.utf8.rawValue)!)
body.append(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").data(using: String.Encoding.utf8.rawValue)!)
body.append(imageData!)
body.append(NSString(format: "\r\n--%@\r\n", boundary).data(using: String.Encoding.utf8.rawValue)!)
request.httpBody = body as Data
do{
let returnData = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: nil)
let returnString = NSString(data: returnData, encoding: String.Encoding.utf8.rawValue)
print("returnString \(returnString)")
}
catch{print("gg")
}
}
现在,当我运行此函数时,服务器将返回:
502-Web服务器在充当服务器时收到无效响应 网关或代理服务器。
您要查找的页面有问题,并且 无法显示。当Web服务器(充当网关或 代理)与上游内容服务器联系,则收到无效信息 内容服务器的响应。
这是因为我没有发送3个参数。我想知道如何添加参数(2个字符串,1个整数-总计:2个字符串,1个整数,1个图像)
关于如何添加参数的任何建议?
答案 0 :(得分:1)
无论好坏,我不得不为iOS编写许多多部分的mime编码器-尽管所有这些都是在Objective-C中实现的。您可以在RFC中找到有关格式的所有详细信息。我确实无法忍受这种格式,但是在没有二进制格式的情况下将二进制数据发送到HTTP服务器具有挑战性。
在我看来,您快要到了。您只需要在邮件中添加更多的多部分内容即可。
您可以在this question中看到一些示例。