如何在Liferay Web服务中获取HttpServletRequest

时间:2012-06-22 02:05:29

标签: web-services liferay

您好我有一个从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。有没有更好的方法从标头获取参数?谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

在Liferay中,您将从HttpServletRequest获得PortletRequest。请使用com.liferay.portal.util.PortalUtil课程。

其中有两种方法。 getHttpServletRequest()getOriginalServletRequest(),您将从这些方法中获得两个核心级别的http请求。