我想使用Alamofire将图片网址上传到我的服务器。我有一个结构来保存我的图像URL和一个在框架上看起来像这样的CGRect:
public struct TGImage {
private(set) var url: String?
private(set) var crop: CGRect
public init(url: String, crop: CGRect) {
self.url = url
self.crop = crop
}
}
在我项目的viewDidLoad()
中也是如此:
let tgImageURL = TGImage(url: "http://media.gettyimages.com/photos/model-walks-the-runway-at-the-tory-burch-fw17-show-during-new-york-picture-id635259314", crop: CGRect(x: 0, y: 0, width: 499, height: 358))
我的服务器接受该结构并返回json,但我不知道如何将其上传到服务器。这就是我到目前为止在框架方面的功能:
public func detectBoxes(image: TGImage) {
let user = "key_wcjRv0QAasd76W83tZHrIH1Y70U"
let password = ""
var headers: HTTPHeaders = ["Content-Type" : "application/json"]
if let authorizationHeader = Request.authorizationHeader(user: user, password: password) {
headers[authorizationHeader.key] = authorizationHeader.value
}
Alamofire.request("http://api-dev.websiteURL.co/v1/prediction/tag", headers: headers)
.responseJSON { response in
debugPrint(response)
}
}
在项目方面:
tg.detectBoxes(image: tgImageURL)
答案 0 :(得分:1)
您的客户和服务器需要就共同的语言达成一致意见。通常它是JSON或XML,因此您需要将对象序列化为JSON或XML。在您的代码中,它似乎应该是JSON,因为您在标头中指出内容类型是JSON。 (并且没有人真正使用xml)
您还需要(与服务器)同意服务器希望您使用哪种http方法(发布或获取),这将决定您将在哪个位置发送数据(Msg 40515, Level 15, State 1, Line 16
Reference to database and/or server name in 'DatabaseB.dbo.TableB ' is not supported in this version of SQL Server.
方法 - 或{{1} }方法 - 在标题上)
使用Alamofire's json-encoding文档查看有关如何正确发送请求的示例和说明(使用post
)
无论如何,序列化你的结构并不困难,
您可以使用Swift使用get
构建JSON序列化,这有点麻烦或使用像SwiftyJSON这样的开源库
以下是如何使用post
NSJSONSerialization