java – 如何在使用RestTemplate(从休息客户端)中为多部分上传中设置文件的内容类型

前端之家收集整理的这篇文章主要介绍了java – 如何在使用RestTemplate(从休息客户端)中为多部分上传中设置文件的内容类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要上传文件将始终是一个xml文件.我想将content-type设置为application / xml
这是我的代码
MultiValueMap<String,Object parts = new LinkedMultiValueMap<String,Object(); parts.add("subject","some info"); 
         ByteArrayResource xmlFile = new    ByteArrayResource(stringWithXMLcontent.getBytes("UTF-8")){
                 @Override
                 public String getFilename(){
                     return documentName;
                 }             
             };

     parts.add("attachment",xmlFile);

//sending the request using RestTemplate template;,the request is successfull 
String result = template.postForObject(getRestURI(),httpEntity,String.class);      
//but the content-type of file is 'application/octet-stream'

原始请求如下所示:

Content-Type:
    multipart/form-data;boundary=gbTw7ZJbcdbHIeCRqdX81DVTFfA-oteHHEqgmlz
    User-Agent: Java/1.7.0_67 Host: some.host Connection: keep-alive
    Content-Length: 202866

    --gbTw7ZJbcdbHIeCRqdX81DVTFfA-oteHHEqgmlz Content-Disposition: form-data;    name="subject" Content-Type: text/plain;charset=ISO-8859-1
    Content-Length: 19

    some info

    --gbTw7ZJbcdbHIeCRqdX81DVTFfA-oteHHEqgmlz Content-Disposition: form-data;   name="attachment"; filename="filename.xml" Content-Type:
    application/octet-stream Content-Length: 201402

    ....xml file contents here ..

文件内容类型正在生成为“应用程序/八位字节流”,其中我希望它是“application / xml”
我如何设置文件内容类型?

解决方法

从此链接提取出来后,我找出了解决方案:

Making a multipart post request with compressed jpeg byte array with spring for android

解决方案是将ByteArrayResource放在具有所需标头的HttpEntity中,并将HttpEntity添加到Multivaluemap(而不是添加ByteArrayResource本身).

码:

Resource xmlFile = new ByteArrayResource(stringWithXMLcontent.getBytes("UTF-8")){
            @Override
            public String getFilename(){
                return documentName;
            }
        };
        HttpHeaders xmlHeaders = new HttpHeaders();
        xmlHeaders.setContentType(MediaType.APPLICATION_XML);
        HttpEntity<Resource> xmlEntity = new HttpEntity<Resource>(xmlFile,xmlHeaders);
        parts.add("attachment",xmlEntity);

猜你在找的Java相关文章