我需要发送一个自定义参数的POST请求(包含路径的"data")并将内容类型设置为text/plain。我查看了大量类似的问题,但是发布的解决方案都没有帮助。
该方法应列出此目录中的文件。
我的代码如下:
public List<FileWrapper> getFileList() {
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("data", "/public/");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(
map, headers);
String url = "http://192.168.1.51:8080/pi/FilesServlet";
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
String response = restTemplate
.postForObject(url, request, String.class);
List<FileWrapper> list = new ArrayList<>();
for (String part : response.split("\\|")) {
System.out.println("part " + part);
list.add(new FileWrapper(part));
}
return list;
}
以下是等效的JavaScript工作代码:
function getFileList(direction){
$("div.file-list").html("<center><progress></progress></center>");
$.ajax({
url: "http://192.168.1.51:8080/pi/FilesServlet",
type: "POST",
data: direction ,
contentType: "text/plain"
})
由于请求返回空字符串表示路径无效,因此该参数未被添加。期望的响应格式为文件名*文件大小|文件名*文件大小 ...
提前致谢。
data
不是 URL 的一部分,这是POST
方法,data
值是一个参数。 - Asalas77{'data':'/public/'}
吗?你能在JS代码中打印方向并在这里回复吗? - nileshcurl -i -k -H "Content-Type:text/plain" -X POST -d '{"data":"/public/"}' "http://192.168.1.51:8080/pi/FilesServlet"
- nileshcurl -X POST --data "/private/" --header "Content-Type: text/plain" localhost:2222/pi/FilesServlet
,但我现在不在工作岗位上,无法远程操作,所以我明天早上会尝试两种方法并在这里回复结果。 - Asalas77