Java 使用SpringRESTTemplate上载zip文件和表单数据

Java 使用SpringRESTTemplate上载zip文件和表单数据,java,spring,resttemplate,Java,Spring,Resttemplate,我正在尝试使用restemplate上传zip文件和表单数据。 请在下面查找代码 @Controller @RequestMapping("/test") public class EdicomGatewayClient { @RequestMapping(value ="/publisEdicomDocument", method = RequestMethod.POST) public void publisEdicomDocument() {

我正在尝试使用
restemplate
上传zip文件和表单数据。 请在下面查找代码

@Controller
@RequestMapping("/test")
public class EdicomGatewayClient {

    @RequestMapping(value ="/publisEdicomDocument", method = RequestMethod.POST)
    public void publisEdicomDocument() {        

        List<ApiError> errors = null;

        try {
            RestTemplate restTemplate = new RestTemplate();

            String restURL = "";
            File file = new File("");

            DiskFileItem fileItem = new DiskFileItem("file", "text/plain", false, file.getName(), (int) file.length(), file.getParentFile());
            fileItem.getOutputStream();
            MultipartFile multipartFile = new CommonsMultipartFile(fileItem);

            List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
            acceptableMediaTypes.add(MediaType.MULTIPART_FORM_DATA);

            HttpHeaders headers = new HttpHeaders();
            headers.setAccept(acceptableMediaTypes);

            MultiValueMap<String, Object> multipartRequest = new LinkedMultiValueMap<String, Object>();

            multipartRequest.add("user","OPENTEXT_AR_TST");
            multipartRequest.add("password","4t4qqdbddp");
            multipartRequest.add("domain","OPENTEXT_AR_TST");
            multipartRequest.add("group","ASPEDI41");
            multipartRequest.add("publishType","2");
            multipartRequest.add("process","MAPA_AFIP_WSMTXCA_EDICOM_OPENTEXT");
            multipartRequest.add("saveOriginalImage",false);
            multipartRequest.add("sendDocument",true);
            multipartRequest.add("returnData",false);
            multipartRequest.add("returnDataType","2");
            multipartRequest.add("message", new ByteArrayResource(multipartFile.getBytes()));
            multipartRequest.add("filename", multipartFile.getOriginalFilename());

            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(multipartRequest, headers);

            ResponseEntity response = restTemplate.exchange(restURL,HttpMethod.POST, requestEntity, String.class);

            System.out.println("Response ******************************************:"+response);

        } catch (Exception e) {

        }   
    }

    public static void main(String[] args) {
        EdicomGatewayClient edicom = new EdicomGatewayClient();
        edicom.publisEdicomDocument();
    }       
}

为什么在
控制器内使用
restemplate
Spring
RestController
用于服务
REST
资源。您可以使用来自不同客户端的
restemplate
调用
RestController
端点。作为解决此问题的第一步,这可能对您有好处。这是您在代码中使用的真正API端点吗?您确定目标URL的可用性吗?为什么要在
控制器中使用
restemplate
Spring
RestController
用于服务
REST
资源。您可以使用来自不同客户端的
restemplate
调用
RestController
端点。作为解决此问题的第一步,这可能对您有好处。这是您在代码中使用的真正API端点吗?您确定目标URL的可用性吗?
org.springframework.web.client.HttpClientErrorException: 400 bad Request.