我花了很多时间将图像上传到服务器(API调用)并获得JSON响应。
我用curl尝试了这个并且它工作得很完美,但却无法在SWIFT中运行。
基本上这就是我想要做的事情(但在SWIFT中):
curl -X POST -F "file=@test.png" http://www.myurl.com:8000/api
这是我的SWIFT函数,用于执行完全相同的Curl操作:
func sendImagePOST(myimage : UIImage!){
var imageData = UIImagePNGRepresentation(myimage)
//I have also tried this version UIImageJPEGRepresentation(myimage, 1.0)
if imageData != nil{
var session = NSURLSession.sharedSession()
var boundary = NSString(format: "---------------------------1940928093901861121640280121")
var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
var request = NSMutableURLRequest(URL: NSURL(string:"http://www.myurl.com:8000/api")!)
request.HTTPMethod = "POST"
request.addValue(contentType, forHTTPHeaderField: "Content-Type")
var body = NSMutableData.alloc()
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"file\"; filename=\"pouria.png\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
//i have also tired Content-Type:image/jpeg and Content-Type:image/png
body.appendData(imageData)
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
var error: NSError?
var returnData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: &error)
var returnString = NSString(data: returnData!, encoding: NSUTF8StringEncoding)
println(returnString)
}
}
我一直从服务器获得400响应:
returnString Optional(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
)
我使用“requestb.in”来查看帖子调用和Curl POST调用的标题,SWIFT POST调用是相同的但是正文内容不同(我对两个调用都使用了相同的图像)。
非常感谢你的帮助和时间。非常感谢。
答案 0 :(得分:-1)
就个人而言,我甚至不会尝试从头开始编写任何代码,以便在IOS上进行最基本的http操作。我建议使用图书馆;可以在这里找到一个非常可靠的:https://github.com/AFNetworking/AFNetworking