【发布时间】:2013-12-11 19:00:58
【问题描述】:
我使用以下方法成功地将文件发布到同一个 Web 服务:
curl -X POST http://<someUrl> -F "file=@/path/to/aFile.txt"
现在我正在尝试使用 Spring 的 RestTemplate 执行相同类型的操作,但需要注意的是我想发送一个 Java 对象。这是我尝试过的一个示例:
File file = File.createTempFile("aaa","bbb");
FileUtils.writeStringToFile(file, mapper.writeValueAsString(message), "UTF-8");
MultiValueMap<String, Object> values = new LinkedMultiValueMap<String, Object>();
values.add("file", new FileSystemResource(file));
restTemplate.postForObject(URL, values, String.class);
其中 mapper 是 Jackson 的 ObjectMapper (v1.9.6) 的一个实例,而 FileUtils 来自 Apache 的 Common。
REST 服务要求内容类型为 multipart/form-data,因此我尝试将 Java 对象作为 JSON 字符串写入临时文件,然后发布临时文件。不幸的是,我收到了 HTTP 500 内部服务器错误。
我做错了什么?有关如何执行此操作的任何建议?
【问题讨论】:
-
500 是服务器端错误。您必须检查服务器的日志。
-
我知道这是服务器端错误。这是我无法控制也无法访问的外部服务。我希望有人能够使用 RestTemplate 帮助将我成功的 curl 命令“转换”为等效命令。
标签: java json spring curl resttemplate