我有这个有效的命令:

curl -X POST -H -i -F userPic=@/Users/path/to/image.png http://server.com/users/userPic/6

我正在用Swift编写程序,并且试图获得相同的命令将一些带有POST请求的图像数据发送到我的服务器。我很困惑如何将请求的“userPic = @”部分添加到我的请求中。目前,我的Swift代码如下:
func sendUserPicToAPI() {
    if let savedId = defaults.stringForKey("UserId") {
        userId = savedId.toInt()
    }

    var imageData = UIImagePNGRepresentation(profPic.image)
    var url = NSURL(string: "http://server.com/users/userPic/\(userId)")
    var request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "POST"
    request.HTTPBody = NSData(data: imageData!)

    var response: NSURLResponse? = nil
    var error: NSError? = nil
    let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

    let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
    println("API Response: \(results)")
}

我引用了这个stackoverflow post,但是我仍然无法使其工作。我很困惑我做错了什么,如果有人知道正确的解决方法。

最佳答案

主要问题在于,如果不先将图像数据编码为多部分表单数据,就不能直接在HTTPBody中发布图像数据。 the RFC中有一个很好的解释

我在Swift on github中创建了一个简单的框架来执行此操作

基本要求是,在将其作为正文发送之前,需要按照RFC对其进行编码。

关于ios - 如何将Curl转换为iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30747509/

10-12 20:07