如何将Curl转换为iOS

3

我有一个可用的命令:

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帖子,但仍然无法使其工作。我不知道我的操作有什么错误,请问有没有人知道正确的解决方法。

1个回答

1
主要问题在于,您无法直接在HTTPBody中发布图像数据,而必须先将其编码为多部分表单数据。RFC提供了一个很好的解释。
我已经在github上的Swift上创建了一个简单的框架来完成这个过程。
基本原理是,在发送正文之前,您需要按照RFC对其进行编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接