.. bulit documentation master file, created by sphinx-quickstart on Mon Oct 8 10:30:28 2018. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Java 示例 ================================= .. toctree:: :maxdepth: 2 请求并返回结果 --------------- 请求接口地址 ++++++++++++ * http://www.bingtop.com/ocr/upload/ 示例代码 ++++++++++ .. code-block:: java /** * @Description: 根据图片地址转换为base64编码字符串 * @Author: * @CreateTime: * @return */ public static String getImageStr(String imgFile) { InputStream inputStream = null; byte[] data = null; try { inputStream = new FileInputStream(imgFile); data = new byte[inputStream.available()]; inputStream.read(data); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } // 加密 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data); } /** *  sendUrl 请求接口地址 *  param 请求参数,username=value1&password=value2&captchaType=1001&captchaData=/9j/4AAQ... *  JSONObject 返回值JSON */ private JSONObject sendPostUrl(String url, String param){ PrintWriter out = null; BufferedReader in = null; JSONObject jsonObject = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 发送POST请求必须设置如下两行 conn.setRequestProperty("content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流(设置请求编码为UTF-8) out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8")); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 获取请求返回数据(设置返回数据编码为UTF-8) in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } jsonObject = JSONObject.fromObject(result); System.out.println(jsonObject); } catch (IOException e) { e.printStackTrace(); } finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return jsonObject; } // 获取图片的base64数据 String captchaData = getImageStr("C:\images\图片地址.jpg"); JSONObject jsonObject = sendPostUrl("http://www.bingtop.com/ocr/upload/", "username=value1&password=value2&captchaType=1001&captchaData="+captchaData); 请求参数 +++++++++++++++++++++ .. code-block:: json { "username":"admin", "password":"123456", "captchaData":"/9j/4AAQ...示例省略若干位(图片文件内容的base64结果)...==", "captchaType":1001 } * username:注册用户名 * password:登录密码 * captchaData:图片文件内容,base64后的数据 * captchaType:识别类型(整形),,请查阅识别分类 响应数据 +++++++++++++++++++++ .. code-block:: json {"code":0, "message":"", "data":{"captchaId":"1001-158201918112812","recognition":"RESULT"}} * code:统一错误返回 * message:统一错误信息返回,正常为空 * data->captchaId:识别ID(非数字格式,预留40字节字符串长度) * data->recognition:识别结果 提示 +++++++++++++++++ * 简单图,英文字母、数字直接返回。全部大写化处理。 * 中文图,可能返回中文 或者返回 JSON标准的unicode \u4e2d\u6587 ,需要接入方使用标准JSON解析库自动处理。 * 坐标图,返回 | 和 , 分割的相对图片左上角像素坐标, 100,102|200,202 * 核心提示 * 获取结果接口为长连接阻塞式,不需要轮询获取结果。此接口为长连接阻塞模式。正常情况下,此接口会阻塞HTTP请求,直至有识别结果返回。所以接入方发起HTTP请求时, 应当 将此接口的超时时间设置为 60秒 。 * 为了防止网络问题导致长连接断开。接入方客户端应当在此接口没有返回任何 HTTP状态码 时(即网络故障),跳过本条,下次请求随机间隔 0.2 ~ 1.5 秒。 * 如遇任何错误,例如用户密码错误、点数不足,重新上传时,必须间隔3秒以上,防止无意义的重试。否则服务器会认为恶意攻击封禁IP。