【问题标题】:Apache WicketStuff REST get list of request headersApache WicketStuff REST 获取请求标头列表
【发布时间】:2019-12-18 07:13:27
【问题描述】:

我正在使用 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";
}

我认为问题出在@RequestHeaderHttpHeaders,它们来自 springframework。 如果我能得到这些的 wicketstuff 等价物......我不会得到错误。

知道如何解决这些问题或获取请求标头列表的 wicketstuff 等效项吗?

谢谢

【问题讨论】:

  • 可以获取headers public Object testSubmit(@RequestHeader("Accept-Encoding") String encoding) { // 这里显示请求头 return "OK"; }
  • 我需要请求中的所有标头,我能够通过HttpServletRequest 然后getHeaderNames() 获取标头名称列表.. 并迭代这些名称以获取标头值。

标签: java wicket wicketstuff


【解决方案1】:

由于我只需要显示请求中的标头列表,因此我使用HttpServletRequest 然后调用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));

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多