Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring';什么是REST模板?_Java_Json_Spring_Curl_Resttemplate - Fatal编程技术网

Java 如何使用Spring';什么是REST模板?

Java 如何使用Spring';什么是REST模板?,java,json,spring,curl,resttemplate,Java,Json,Spring,Curl,Resttemplate,我使用以下方法成功地将文件发布到同一web服务: curl -X POST http://<someUrl> -F "file=@/path/to/aFile.txt" curl-xpost http://-F“file=@/path/to/aFile.txt” 现在,我正试图使用Spring的RestTemplate执行相同类型的操作,但需要注意的是,我要发送一个Java对象。下面是我尝试的一个例子: File file = File.createTempFile("aaa",

我使用以下方法成功地将文件发布到同一web服务:

curl -X POST http://<someUrl> -F "file=@/path/to/aFile.txt"
curl-xpost http://-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);
File File=File.createTempFile(“aaa”、“bbb”);
FileUtils.writeStringToFile(文件,mapper.writeValueAsString(消息),“UTF-8”);
多值映射值=新链接的多值映射();
添加(“文件”,新文件系统资源(文件));
postForObject(URL、值、String.class);
其中mapper是Jackson的ObjectMapper(v1.9.6)的一个实例,FileUtils来自Apache的Common

REST服务要求内容类型为multipart/form data,因此我尝试将Java对象作为JSON字符串写入临时文件,然后发布临时文件。不幸的是,我得到一个HTTP 500内部服务器错误


我做错了什么?有什么建议吗?

看来我已经解决了。以下是我所做的参考:

File file = File.createTempFile("aaa","bbb");
FileUtils.writeStringToFile(file, mapper.writeValueAsString(message), "UTF-8");

MultiValueMap<String, Object> values = new LinkedMultiValueMap<String, Object>();
values.add("name", file.getAbsolutePath());
values.add("filename", file.getAbsolutePath());
values.add("file", new FileSystemResource(file));

restTemplate.postForObject(URL, values, String.class);
File File=File.createTempFile(“aaa”、“bbb”);
FileUtils.writeStringToFile(文件,mapper.writeValueAsString(消息),“UTF-8”);
多值映射值=新链接的多值映射();
add(“name”,file.getAbsolutePath());
add(“filename”,file.getAbsolutePath());
添加(“文件”,新文件系统资源(文件));
postForObject(URL、值、String.class);

500是服务器端错误。您必须检查服务器上的日志。我知道这是服务器端错误。这是一个我无法控制也无法访问的外部服务。我希望有人能够帮助我使用RestTemplate将成功的curl命令“转换”为等效命令。