Android SDK 批量调用时,存在 bug
sfkbluewing 发布于2018-11 浏览:1939 回复:2
1
收藏

文字识别的 Android SDK ,批量调用时,FileBase64Encoder 的 encode 方法中 inputStream 会出现空指针问题。

HttpsClient 类中,Call 类、 RequestInfo 类、RequestInfo 类都为静态内部类。Call 类中拥有 RequestInfo 的实例,RequestInfo 中又持有了 RequestBody 的实例。

RequestBody 的成员变量 FileBase64Encoder 实例,声明的是静态成员变量。

FileBase64Encoder 实例中,有图像文件的 InputStream 和用来读入数据的 buffer 数组。

这样的话多次请求,是共用的 buffer 和 InputStream,当前面的 InputStream 读完后,调用了关闭流的方法,并将 InputStream 置为 null。

会导致后面请求的 encode 方法过来,InputStream 引用空指针。

11-14 11:37:25.732 30072 30856 E AndroidRuntime: FATAL EXCEPTION: Thread-234
11-14 11:37:25.732 30072 30856 E AndroidRuntime: Process: com.taikanglife.isalessystem, PID: 30072
11-14 11:37:25.732 30072 30856 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[])' on a null object reference
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.utils.FileBase64Encoder.encode(FileBase64Encoder.java:26)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.utils.HttpsClient$RequestBody.setFileParams(HttpsClient.java:76)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.utils.HttpUtil.post(HttpUtil.java:86)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.OCR$2.onResult(OCR.java:331)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.OCR.getToken(OCR.java:839)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.OCR.recognizeNoLocation(OCR.java:328)
11-14 11:37:25.732 30072 30856 E AndroidRuntime: 	at com.baidu.ocr.sdk.OCR.recognizeGeneralBasic(OCR.java:277)
收藏
点赞
1
个赞
共2条回复 最后由用户已被禁言回复于2022-04
#3FF9Du91mm3回复于2021-05

都 2021-05-28 了 bug 还在,就这还商用???

0
#2独孤焰坤回复于2019-01

现在是初步阶段,BUG是有的,自己解决一下

0
TOP
切换版块