如何将Curl转换为iOS

时间:2015-06-10 05:07:47

标签: ios swift curl

我有这个有效的命令:

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,但我仍然无法让它工作。我很困惑我做错了什么,如果有人知道正确的方法。

1 个答案:

答案 0 :(得分:1)

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

我已在Swift on github

中创建了一个简单的框架来执行此操作

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