首页 > 解决方案 > 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来自HttpHeadersspringframework。如果我能得到这些的 wicketstuff 等价物......我不会得到错误。

关于如何修复这些或获取请求标头列表的 wicketstuff 等效项的任何想法?

谢谢

标签: javawicketwicketstuff

解决方案


由于我只需要显示请求中的标头列表,因此我使用HttpServletRequestthen 调用getHeaderNames()来获取标头名称。

然后迭代标题名称以获取标题值。

为了在 wicketstuff 休息中获得 HttpServletRequest,在我的情况下,我将其称为:
HttpServletRequest request = (HttpServletRequest) getCurrentWebRequest().getContainerRequest();

注:
getCurrentWebRequest()来自org.wicketstuff.rest.resource.AbstractRestResourcegetContainerRequest()来自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));

这正是我所需要的,我只需要它反映在我的调试日志中

希望这可以帮助


推荐阅读