【发布时间】:2019-01-16 07:11:06
【问题描述】:
我想从本地计算机发送到 OCR 图像,而不是一些带有图像的远程 URL(这种情况下效果很好)。但问题是,我不知道如何正确构造多部分实体的有效负载。我的有效载荷应该如下所述。
这就是documentation of API 中描述的内容。解码 multipart/related 数据中直接给出的图像数据。顺序很重要,第一部分应该是 JSON,它告诉它使用哪个 OCR 引擎。 thi JSON 的架构记录在 /ocr 端点中。在这种情况下,JSON 的 img_url 参数将被忽略。
图片附件应该是second 部分,它应该适用于任何图片内容类型(例如,image/png、image/jpg 等)。
Request (multipart/related; boundary=---BOUNDARY)
-----BOUNDARY
Content-Type: application/json
{"engine":"tesseract"}
-----BOUNDARY
-----BOUNDARY
Content-Disposition: attachment;
Content-Type: image/png
filename="attachment.txt".
PNGDATA.........
-----BOUNDARY
这是我尝试过的。要执行多部分/相关请求,我正在使用 org.apache.httpcomponents
CloseableHttpClient httpClient = HttpClients.createDefault();
MultipartEntityBuilder multipartEntityBuilder =
MultipartEntityBuilder.create().setBoundary(BOUNDARY).setContentType(ContentType.APPLICATION_JSON).addTextBody("engine", "tesseract")
.setBoundary(BOUNDARY).setBoundary(BOUNDARY);
multipartEntityBuilder.addBinaryBody("file_upload", new File(fileTextPath), ContentType.create(CONTENT_TYPE), fileTextPath).setBoundary(BOUNDARY);
HttpEntity entity = multipartEntityBuilder.build();
HttpPost httpPost = new HttpPost(URL);
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE_MULTIPART+";boundary="+BOUNDARY);
httpPost.setEntity(entity);
【问题讨论】:
标签: java apache-httpcomponents multipart-mixed-replace