1

嗨,我有一个从 Liferay 的 buildServices 生成的 webService .. 方法看起来像这样

 public User getUserTest(long userId) {

    User u = null;
    try {
        Token token = OAuthFactoryUtil.createToken("sasa", "sdad");
    } catch (OAuthException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    try {
        u = UserLocalServiceUtil.getUser(userId);
        System.out.println("xx user " + u.getScreenName());
    } catch (Exception e) {
        System.out.println(" Exception ************* " + e.toString());
    }

    return u;
} 

这个 ws 中的参数是这样的:

http://localhost:8080/demo-portlet/api/json?serviceClassName=com.sample.portlet.library.service.BookServiceUtil&serviceMethodName=getUserTest&userId=10195&serviceParameters=[userId]

userId作为参数..

如果需要,您将如何传递参数HttpServletRequest.. 我的方法如下所示

public User getUserTest(HttpServletRequest httpRequest) {

    User u = null;

    try {

        String version = httpRequest.getHeader("X-PHM-APP-VERSION");
        Token token = OAuthFactoryUtil.createToken("sasa", "sdad");
    } catch (OAuthException e1) {
        e1.printStackTrace();
    }

    try {
        String authorization = httpRequest.getHeader("Authorization");
        u = UserLocalServiceUtil.getUser(Long.valueOf(authorization));
        System.out.println("authorization --> " + authorization);
        System.out.println("xx user " + u.getScreenName());
    } catch (Exception e) {
        System.out.println(" Exception ************* " + e.toString());
    }

    return u;
}

我需要HttpServletRequest从标头获取参数,而不是通过 url。有没有更好的方法从标头获取参数?感谢您的帮助

4

2 回答 2

2

我认为 web 服务层通常处于稍后阶段,您永远不会传递请求。理想情况下,您要做的是将标头参数而不是请求传递给 Web 服务

于 2012-06-22T04:32:28.687 回答
0

在 Liferay 中,您HttpServletRequest将从PortletRequest. 请使用com.liferay.portal.util.PortalUtil类。

里面有2个方法。getHttpServletRequest()并且getOriginalServletRequest(),您将从这些方法中获得两个核心级别的 http 请求。

于 2012-06-22T04:28:53.630 回答