我使用 Flask 開發了一個 OCR API 來掃描照片并回傳掃描的資料。我想從 Spring Boot 呼叫這個 API,所以我可以將照片發布到 API 端點并獲得回應并使用該回應將其映射到我的 POJO。每當我使用郵遞員放置照片時,我都會將所有引數設定為 NULL。我所做的一切都是正確的。我轉換了影像并將其發送到正確的 URL。我不完全知道這里的問題。
POSTMAN 的 Flask API 結果
{
"2": {
"adadFar": "? 0",
"esmTijari": "PFE",
"esmTijariLatin": "EXAMPLE RNE",
"makarEjtima": "Shand! ???? ?????",
"makarNachat": "???? ????? ???????",
"nithamKanouni": "??????? ?????? ald",
"rasMal": "1000000",
"tasmiya": "FACULTE DES SCIENCES",
"tasmiyaLatin": "LCS 3"
},
"adad_sejel: ": "F1700655698",
"modatCharika: ": "99",
"mouaref: ": "1887415R",
"nachatRaisi: ": "??? ??????? ? ?????? ???????? ? ????????",
"tarikh: ": "2015/09/29",
"tarikhBideyetNachat: ": "2001-12-6",
"tarikhEchhar: ": "2005-01-26"
}
發布照片時的春季啟動結果
{
"mouaref": null,
"adad_sejel": null,
"tarikh": null,
"tasmiya": null,
"tasmiyaLatin": null,
"esmTijari": null,
"esmTijariLatin": null,
"makarEjtima": null,
"makarNachat": null,
"nithamKanouni": null,
"rasMal": null,
"adadFar": null,
"nachatRaisi": null,
"tarikhBideyetNachat": null,
"tarikhEchhar": null,
"modatCharika": null
}
這是我的 Pojo 課程:
public class formResponse {
private String mouaref;
private String adad_sejel;
private String tarikh;
private String tasmiya;
private String tasmiyaLatin;
private String esmTijari;
private String esmTijariLatin;
private String makarEjtima;
private String makarNachat;
private String nithamKanouni;
private String rasMal;
private String adadFar;
private String nachatRaisi;
private String tarikhBideyetNachat;
private String tarikhEchhar;
private String modatCharika;
\\getters and setters
public formResponse(){
}
這是我的服務類:
@Service
public interface FormRecognition {
public static formResponse getInfoClientFromRne(MultipartFile image) {
try {
formResponse form = new formResponse();
MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
bodyMap.add("image", new FileSystemResource(convert(image)));
// System.out.println("body map ;" bodyMap.size());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(bodyMap, headers);
// System.out.println("Headers: " requestEntity.getHeaders());
// System.out.println("requestEntity ; " requestEntity.toString());
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<formResponse> response = restTemplate.exchange("http://172.20.10.3:3500/upload-image", HttpMethod.POST, requestEntity,
formResponse.class);
form= response.getBody();
// System.out.println("form ; " response);
// System.out.println("form ; " form.getMouaref());
return form;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static File convert(MultipartFile file) {
File convertFile = new File(file.getOriginalFilename());
try {
convertFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convertFile);
fos.write(file.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return convertFile;
}
}
這是我的控制器:
@RestController
public class FileUploadController
{
@RequestMapping(value = "/upload", produces = {
MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.POST)
public formResponse upload(@RequestParam("image") MultipartFile[] image){
System.out.println("params: emtry");
try {
formResponse form = FormRecognition.getInfoClientFromRne(image[0]);
System.out.println("params: " form);
return form;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
uj5u.com熱心網友回復:
解決了!事實證明,我在 Flask 回應中使用了“:”。這就是為什么 Spring boot 無法讀取回應,因為它不同。我更改了我的 Python 腳本以匹配 Spring Boot 中的確切命名,這就是我獲得資料的時候。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/482308.html
上一篇:springboot-僅當ssl.key-store檔案存在時才使用https
下一篇:如果使用FilterRegistrationBean,為什么Autowired不能在Filter內部作業?[復制]
