HttpClientUtils.java 4.52 KB
package com.objecteye.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Component
public class HttpClientUtils {
	@Value("${requestUrl}")
	private String requestUrl;
	@Value("${requestPath}")
	private String picPath;
	@Autowired
	private VehicleEngine vehicleEngine;

	public String VehicleAnalysis(String TPXX) {
		String result = VehicleAnalysis("", TPXX, "", "");
		return result;

	}

	//通过图片路径获取图片中车辆数据
	public String VehicleAnalysis(String GCXH, String TPXX, String MRHPT, String HPHM) {

		RestTemplate restTemplate = new RestTemplate();
//		HttpHeaders headers = new HttpHeaders();
//		headers.add("Content-Type", "application/json;charset=UTF-8");//标准Header
//		HttpEntity<Void> httpEntity = new HttpEntity<>(headers);

		Map<String, String> uriVariables = new HashMap<>();
		uriVariables.put("GCXH", GCXH);
		if (TPXX != null || TPXX.length() > 0) {
			uriVariables.put("TPXX", TPXX);
		} else {
			uriVariables.put("TPXX", "/software/sy/vehicle-socket/c++/image/test.jpg");
		}
		uriVariables.put("MRHPT", MRHPT);
		uriVariables.put("HPHM", HPHM);
		ResponseEntity<String> responseEntity = restTemplate.postForEntity(requestUrl, uriVariables, String.class);
		String body = responseEntity.getBody();
		return body;
	}

	//获取临时上传的图片数据信息
	public String VehicleAnalysisTmp(MultipartFile TPXX) {
		String analysis = VehicleAnalysisTmp("", TPXX, "", "");
		return analysis;
	}

	//获取临时上传的图片数据信息
	public String VehicleAnalysisTmp(String GCXH, MultipartFile TPXX, String MRHPT, String HPHM) {
		String fileName = TPXX.getOriginalFilename();//name
//		String tempFilePath = System.getProperty("java.io.tmpdir") + "/" + fileName;
		String tempFilePath = null;
		if (picPath.endsWith("/") || picPath.endsWith("\\")) {
			tempFilePath = picPath + fileName;
		} else {
			tempFilePath = picPath + "/" + fileName;
		}

		File tempFile = new File(tempFilePath);
		try {
			TPXX.transferTo(tempFile);//生成临时文件
		} catch (IOException e) {
			e.printStackTrace();
		}

		String analysis = VehicleAnalysis(GCXH, tempFile.getAbsolutePath(), MRHPT, HPHM);

		tempFile.delete();//删除临时文件文件
		return analysis;
	}

	public String MultipartFileToBase64(MultipartFile file) throws Exception {
		BASE64Encoder base64Encoder = new BASE64Encoder();
		String base64EncoderImg = file.getOriginalFilename() + "," + base64Encoder.encode(file.getBytes());
		String[] split = base64EncoderImg.split(",");
		String split1 = split[1];
		String base64Value = split1.replaceAll("\r\n|\r|\n", "");
		return base64Value;
	}

	//将multipart文件转成车型对象
	public String multiToVehicle(MultipartFile picfile) {
		String vehicleInfoByBase64 = null;
		try {
			String base64 = MultipartFileToBase64(picfile);
			vehicleInfoByBase64 = vehicleEngine.getVehicleInfoByBase64(base64);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return vehicleInfoByBase64;
	}

	//将multipart文件转成车型对象
	public String multiToHumanVehicle(MultipartFile picfile) {
		String vehicleInfoByBase64 = null;
		try {
			String base64 = MultipartFileToBase64(picfile);
			vehicleInfoByBase64 = vehicleEngine.getHumanVehicleInfoByBase64(base64);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return vehicleInfoByBase64;
	}

	/**
	 * @param base64String base64码字符串
	 **/
	public BufferedImage changeBase64StringtoImage(String base64String) {
		BASE64Decoder decoder = new BASE64Decoder();
		BufferedImage buffer = null;
		try {
			byte[] bytes = decoder.decodeBuffer(base64String);
			ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
			buffer = ImageIO.read(bais);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return buffer;
	}

	public String multiToPeople(MultipartFile picfile) {
		String peopleInfoByBase64 = null;
		try {
			String base64 = MultipartFileToBase64(picfile);
			peopleInfoByBase64 = vehicleEngine.getPeopleInfoByBase64(base64);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return peopleInfoByBase64;
	}
}