Comment définir le type de contenu pour le fichier dans le téléchargement partitionné lorsque vous utilisez RestTemplate (à partir d'un client de repos)
Le fichier que je suis en train de télécharger sera toujours un fichier xml. Je veux définir le type de contenu application/xml
Voici mon code:
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'
la demande brute ressemble à ceci:
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 ..
Le type de contenu du fichier est généré comme "application/octet-stream", alors que je veux qu'il soit "application/xml"
Comment puis-je définir le type de contenu du fichier?
source d'informationauteur RGR | 2015-02-06
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution après la prise de l'indice à partir de ce lien:
Faire un multipart requête post avec jpeg compressé tableau d'octets avec le printemps pour android
Solution est de mettre le ByteArrayResource dans un HttpEntity avec en-tête nécessaire et ajouter le HttpEntity à Multivaluemap (au Lieu d'ajouter ByteArrayResource lui-même.)
Code:
Je n'ai pas utilisé RestTemplate mais j'ai utilisé HttpClient dans le passé - c'est de Cette façon que je passe la partie du corps -
Vous aurez à regarder pour l'API dans le RestTemplate qui peut prendre le type de contenu