【问题标题】:Alamofire & base64string in SwiftSwift 中的 Alamofire 和 base64string
【发布时间】:2015-04-20 12:33:18
【问题描述】:

尝试将base64String 添加到Alamofire 的参数数组中时出现问题,不确定是否有人知道此限制或与Swift 有关。

    var  base64String:String = ""
        if((testImageRow.value) != nil) {
            var img:UIImage = testImageRow.value as! UIImage
            var imageData = UIImagePNGRepresentation(img)
            base64String = imageData.base64EncodedStringWithOptions(.EncodingEndLineWithLineFeed)
        }

    var params:[String: AnyObject] = ["image": base64String]
    myAPI.post("image/update", parameters:params , delegate: self,tag:0)

以下是收到的错误

GET Error: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "The operation 
couldn’t be completed. (Cocoa error 3840.)" 
(Invalid value around character 0.) UserInfo=0x7fbda203c110
{NSDebugDescription=Invalid value around character 0.})

【问题讨论】:

    标签: ios swift alamofire


    【解决方案1】:

    Optional() 参数仅在返回数据未正确指定存储在变量中的值的类型时出现。

    首先从响应 URL 开始,看看实际发生了什么。您可以 NSLog [NSString stringWithUTF8String: [data bytes]] 获取不错的数据版本,但不要忘记查看 HTTP 响应。登录[Description answer]

    如果您的代码中没有实现POST 方法,我建议您添加到您的MyApi 问题可以假设占用extension Alamofire.Request

    var params: [Dictionary<String, AnyObject>] = []
    var addthis = [
        "image": ""
    ]
    params.append(addthis)
    

    这样我编码了一张图片:

     var pic :NSData = UIImageJPEGRepresentation(cameraView.image, 0.5)
     var str = pic.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))
    

    【讨论】:

    • 发帖前失败了。
    • error (Error 3840. Cocoa) 是由于对 JSON 尤其是 Alamofire 的不正确解析造成的,你可以试试这个:var params: [Dictionary&lt;String, AnyObject&gt;] = [],我说这会帮助你更清楚。
    • 如果我删除 base64String 参数解析正确,但如果我添加 base64String 它失败。我开始怀疑base64字符串中是否有“{”字符或其他特殊字符导致它失败。
    • 我添加了因为他在我的答案中使用了图像的 base64。
    • 我已经按照您展示的方式进行 base64 编码,但没有运气将 base64 发送到 Alamofire
    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多