将 [UInt8] 作为数据附加到 alamofire

Posted

技术标签:

【中文标题】将 [UInt8] 作为数据附加到 alamofire【英文标题】:Attaching [UInt8] as data to alamofire 【发布时间】:2018-03-21 07:13:27 【问题描述】:

我正在尝试使用 alamofire 将一些字节上传到服务器,我的代码如下:

let parameters: Parameters = ["data": data]
let headers: HTTPHeaders = ["Content-Type": "application/vnd.awallet-signed-orders-v0"]

    Alamofire.request(query, method: .put,
                      parameters: parameters,
                      encoding: JSONEncoding.default,
                      headers: headers).responseJSON  response in
        print("Request: \(String(describing: response.request))")   // original url request
        print("Response: \(String(describing: response.response))") // http url response
        print("Result: \(response.result)") // response serialization result

        if let json = response.result.value 
            let parsedJSON = try! JSON(parseJSON: (json as! String))
            callback(parsedJSON["orders"]["accepted"])
        

        if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) 
            print("Data: \(utf8Text)") // original server data as UTF8 string
        
    

数据是 [UInt8] 但是这样做会使 alamofire 将字节转换为字符串,如果数组是 [0,0] 它变成“0,0”,这不是我想要的直接上传字节。

有没有办法在 alamofire 中做到这一点?

注意:我不想将其转换为十六进制字符串,因为这效率不高

【问题讨论】:

【参考方案1】:

已解决,只需要使用上传的方式,将字节转为数据即可

var hexMessageData = signedOrders[0].message

let headers: HTTPHeaders = ["Content-Type": "application/vnd.awallet-signed-orders-v0"]

Alamofire.upload(Data(bytes: hexMessageData), to: query, method: .put, headers: headers).response  response in
   if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) 
            print("Data: \(utf8Text)") // original server data as UTF8 string
            callback(data.hexEncoded)
        
    

【讨论】:

以上是关于将 [UInt8] 作为数据附加到 alamofire的主要内容,如果未能解决你的问题,请参考以下文章

将 Uint8array 保存到 sqlite 文件

将数组列表作为列附加到具有相同列索引的熊猫数据框中

将向量作为一行附加到 CSV 文件中

快速多部分/表单数据上传,将字符串数组附加到正文(问题:数组作为字符串到服务器)

使用列表保存数据并将数据附加到列表作为安全网,python

如何有效地将数据附加到 C 中的 HDF5 表?