java - Apache WicketStuff REST 获取请求标头列表
问题描述
我正在使用 apache wicket 的东西 REST,并且在一个简单的 API 中......我想获取标题列表并将其简单地显示为调试日志。
我的问题是我收到错误java.util.UnknownFormatConversionException
从代码:
@MethodMapping(value="/testSubmit", httpMethod=HttpMethod.POST)
public Object testSubmit() {
return "OK";
}
编码:
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.http.HttpHeaders;
...
@MethodMapping(value="/testSubmit", httpMethod=HttpMethod.POST)
public Object testSubmit(@RequestHeader HttpHeaders headers) {
// Display request headers here
return "OK";
}
我认为问题是@RequestHeader
来自HttpHeaders
springframework。如果我能得到这些的 wicketstuff 等价物......我不会得到错误。
关于如何修复这些或获取请求标头列表的 wicketstuff 等效项的任何想法?
谢谢
解决方案
由于我只需要显示请求中的标头列表,因此我使用HttpServletRequest
then 调用getHeaderNames()
来获取标头名称。
然后迭代标题名称以获取标题值。
为了在 wicketstuff 休息中获得 HttpServletRequest,在我的情况下,我将其称为:
HttpServletRequest request = (HttpServletRequest) getCurrentWebRequest().getContainerRequest();
注:
getCurrentWebRequest()
来自org.wicketstuff.rest.resource.AbstractRestResource
和getContainerRequest()
来自org.apache.wicket.request.Request.getContainerRequest()
public static String getHeaderInfo(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
sb.append("\n");
sb.append("\n[HTTP request headers]\n");
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
sb.append("\"");
sb.append(headerName);
sb.append("\": \"");
Enumeration<String> headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
String headerValue = headers.nextElement();
sb.append(headerValue);
if (headers.hasMoreElements()) {
sb.append(", ");
}
}
sb.append("\"\n");
}
return sb.toString();
}
因此,要显示标题信息:
System.out.println(getHeaderInfo(request));
这正是我所需要的,我只需要它反映在我的调试日志中
希望这可以帮助