我正在向MS ccomputer Visions API提出OCR POST请求,并返回依据:http/1.1 415未支撑的媒体类型[CACHE-CORTOR:cACHE-CONTROL:no-CACHE,pragma,pragma:no Cache:non-Cache,内容长度:183,内容类型:应用程序/JSON;等,等等
这是我的Java代码,在请求中添加了多片(JPG),然后发布。
HttpClient httpClient = HttpClientBuilder.create().build();
String fileContentType = file.getContentType();
URI uri = buildUri();
if(uri == null){
//throw some exception
}
HttpPost request = new HttpPost(uri);
request.setHeader("Content-Type", fileContentType);
request.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
MultipartEntityBuilder mpEB = MultipartEntityBuilder.create();
InputStream fileInputStream = file.getInputStream();
//modify method to add filename if later need arises
//link: https://memorynotfound.com/apache-httpclient-multipart-upload-request/
mpEB.addBinaryBody("image", fileInputStream);
mpEB.setContentType(ContentType.MULTIPART_FORM_DATA);
HttpEntity image = mpEB.build();
request.setEntity(image);
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
System.out.println(json.toString());
//dataFromJsonExtractor.extractData(json);
}
private URI buildUri(){
URI link = null;
try {
URIBuilder builder = new URIBuilder(uriBase);
builder.setParameter("language", "de");
URI uri = builder.build();
link = uri;
}catch (URISyntaxException e){
logger.debug("Computer Vision API URL Builder creation error: " + e);
}
return link;
}
有帮助吗?欢呼!
,如果您只将单个图像有效载荷发布到邮局,而不是构造多部分MIME主体,那将变得更简单,因为您只能一次发布一个图像反正。代码看起来像这样:
public static void run(FileDataSource file) throws Exception
{
HttpClient httpClient = HttpClientBuilder.create().build();
URI uri = buildUri();
HttpPost request = new HttpPost(uri);
request.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
HttpEntity entity = EntityBuilder
.create()
.setStream(file.getInputStream())
.setContentType(ContentType.APPLICATION_OCTET_STREAM)
.build();
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
HttpEntity jsonEntity = response.getEntity();
System.out.println(EntityUtils.toString(jsonEntity));
}
请注意,API期望application/octet-stream
是内容类型,而不是image/*
。