美文网首页
iOS无法解析服务端给的base64数据,服务端解不了iOS给的

iOS无法解析服务端给的base64数据,服务端解不了iOS给的

作者: 香烟不灭 | 来源:发表于2021-09-30 10:48 被阅读0次

    1.我们有个需求,h5通过weex插件传给客户端PDF的base64数据,客户端收后要去加载PDF。
    安卓收到的可以加载,iOS这边一直加载不出来。最后发现h5给过来的base64 经过编码后 + = 会变成%2C %3D 这样的字符。所以应该是做了url编码(URL编码把保留字符表示为%开头的特殊字符序列,所以又叫做百分号编码)。我用了一个笨办法,就是直接替换过来,然后就可以了。
    后来我百度了一下 用下面的方法就可以恢复成正常的字符

    NSString *pdfStr = [inputText stringByRemovingPercentEncoding];

    然后就解决了。
    当然这个方法也可以解决中文乱码的问题。

    2.传给服务端的aes加密数据 经过base64编码 传给服务端,结果 服务端先经过url解码后 才base64解码 然后解不出来了。最后发现 因为我们传给他们的base64里有+ 号,服务端 在url解码的时候 把+变成了 空格了,然后就解不出来了。
    解决办法:我在base64编码后 又给处理了一下 方法如下:

    + (NSString *)URLEncodedString:(NSString *)orString
    {
        
        NSString *unencodedString = orString;
        NSString *encodedString = (NSString *)
        CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                  (CFStringRef)unencodedString,
                                                                  NULL,
                                                                  (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                  kCFStringEncodingUTF8));
        
        return encodedString;
    }
    

    反正base64 这个数据出问题就是因为 有没做url编码,有做的话两边都要相应的解码,才不会出问题。

    最后帮到了你,动动金手指,点个赞再走呗。

    23781632970084_.pic.jpg

    相关文章

      网友评论

          本文标题:iOS无法解析服务端给的base64数据,服务端解不了iOS给的

          本文链接:https://www.haomeiwen.com/subject/byqenltx.html