我有一个序列化的protobuf消息(以[UInt8]
的形式),我需要在HTTP POST请求的正文中发送。我使用的是Alamofire 3.4.0,我的代码如下:
// serializedMessage is my serialized protobuf message in the form of [UInt8]
let headers = ["Content-Type" : "application/x-protobuf"]
Alamofire.request(.POST, myURL, parameters: [:], encoding: .Custom({
(convertible, params) in
let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
mutableRequest.HTTPBody = NSData(bytes: serializedMessage)
return (mutableRequest, nil)
}), headers: headers)
.validate()
.responseString { response in
print("Response: \(response)")
}
我工作的API文档只是说"将(二进制)序列化的protobuf消息写入HTTP POST请求的主体。"目前,服务器给我HTTP / 400(错误的请求),但我不知道为什么。我还是比较新的iOS / Swift / Alamofire,但我已成功使用Alamofire进行其他GET / POST请求。然而,这是我第一次尝试将原始二进制文件写入请求正文中,所以我可能做错了。我错过了一些明显的东西吗?