【发布时间】:2017-02-15 10:06:14
【问题描述】:
我有以下情况。我有一个 XML 文件:
查询用户.xml
<?xml version="1.0"?>
<q:query xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3">
</q:query>
执行 curl 命令时:
curl.exe --user administrator:5ecr3t -H "Content-Type: application/xml" -X POST http://localhost:8080/midpoint/ws/rest/users/search -d @C:\Users\user\query-users.xml
我得到了所需的 XML 响应。
我正在尝试使用来自 JAVA 代码的RestTemplate 执行相同的 POST 请求:
try{
StringBuilder builder = new StringBuilder();
builder.append("http://localhost:8080/midpoint/ws/rest/users/search");
builder.append("?query=");
builder.append(URLEncoder.encode("<?xml version=\"1.0\"?><q:query xmlns:q=\"http://prism.evolveum.com/xml/ns/public/query-3\"></q:query>"));
URI uri = URI.create(builder.toString());
restOperations.postForEntity(uri, new HttpEntity<String>(createHeaders("username", "pass")), String.class);
logger.info(response);
}catch(Exception e){
logger.info(e.getMessage());
}
}
我得到 Internal Servel Error 。
使用RestTemplate 将 XML 字符串传递给 POST 请求时我做错了一些事情,但我不知道它是什么。
有没有办法解决这个问题?
谢谢
【问题讨论】:
-
你可以访问服务器的日志吗?我看到你正在访问 localhost
-
您没有在请求正文中发布您的 xml,而是将其作为查询参数发送...这篇文章可能会对您有所帮助 stackoverflow.com/questions/35461148/…
标签: java xml post spring-boot resttemplate