关于base64字符串在URL的问题!

本文讲述了在使用Base64编码的字符串作为URL参数时遇到的问题,即‘+’号被转换为空格导致请求失败。通过将Base64编码后的字符串进行URL编码(urlencode)可以解决这个问题,确保请求成功。

前几天做一个调用百度API进行图像识别的功能。识别图像中的文字。

var url = "http://apis.baidu.com/apistore/idlocr/ocr"
var httpArg = "fromdevice=pc&clientip=10.10.10.0&detecttype=LocateRecognize&languagetype=CHN_ENG&imagetype=1&image=/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDABMNDxEPDBMREBEWFRMXHTAfHRsbHTsqLSMwRj5KSUU+RENNV29eTVJpU0NEYYRiaXN3fX59S12Jkoh5kW96fXj/2wBDARUWFh0ZHTkfHzl4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHj/wAARCAAfACEDAREAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQDBQb/xAAjEAACAgICAgEFAAAAAAAAAAABAgADBBESIRMxBSIyQXGB/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/APawEBAQEBAgy8i8ZTVV3UY6V1eU2XoWDDZB19S646Gz39w9fkKsW1r8Wm2yo1PYis1be0JG9H9QNYCAgc35Cl3yuVuJZl0cB41rZQa32dt2y6OuOiOxo61vsLcVblxaVyXD3hFFjL6La7I/sDWAgICAgICB/9k="
request(url, httpArg: httpArg)
func  request(httpUrl: String, httpArg: String) {
    var req = NSMutableURLRequest(URL: NSURL(string: httpUrl)!)
    req.timeoutInterval = 6
    req.HTTPMethod = "POST"
    req.addValue("您自己的apikey", forHTTPHeaderField: "apikey")
    req.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    req.HTTPBody = NSString(string: httpArg).dataUsingEncoding(NSUTF8StringEncoding)
    NSURLConnection.sendAsynchronousRequest(req, queue: NSOperationQueue.mainQueue()) {
        (response, data, error) -> Void in
        let res = response as! NSHTTPURLResponse
        println(res.statusCode)
        if let e = error{
            println("请求失败")
        }
        if let d = data {
            var content = NSString(data: d, encoding: NSUTF8StringEncoding)
            println(content)
        }
    }
}

但是换成自己的图片的时候一直调用失败!

总结出的原因是base64的字符串在URL中,“+”会被自动转成空格。

克服这个问题,需要做base64后的字符串urlencode处理!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值