之前使用腾讯云的接口进行ocr识别身份证,腾讯的这个叫做万象优图,腾讯的做法是将图片上传到他们的服务器然后给你识别完成后,返回你识别后的结果,以json的形式返回给你,然而我用图片url的形式进行请求就可以,使用上传图片文件的时候就出现了错误,纠结了两天-----结果这个大坑是react-native给我挖的。
我们进行抓包找到原因是对方收到一个bucket的参数,我们这边发出的是有的,进一步追查原因,也求助了腾讯的技术支持,之后发现我们发过去的包里面有一个boundary的参数的值有双引号“”
,但是安卓就没有问题。我们就进一步寻找boundary相关的问题。
经过查找我们发现boundary就是上传文件的时候分割符,用来分隔各个参数用的。
现在是android使用react-native上传url和图片文件都可以成功
iOS使用react-native可以进行url上传,但是图片文件失败
后来我们又使用了iOS原生OC进行了上传操作,发现抓包出来的boundary值并没有引号,并且上传成功了,这就奇怪了。后来百翻挣扎之后发现是react-native的锅。
请看下图
这是我们目前使用的react-native版本
这是目前版本的react-native代码
这是带双引号的,facebook买一送一,白送双引号。
下面这是最新的react-native版本
这是最新版本的react-native代码
最后对于react-native 我想说入坑需谨慎,什么Write Once, Run Anywhere
简直就是Write Once, Adapted several times