RpcContext
關於 RpcContext 的理解,詳情見:https://blog.csdn.net/sinat_32502451/article/details/134192733
RpcContext是 Dubbo中的一個類,可以用來獲取 Context(上下文),接着就能獲取到 Request、Cookie。
Dubbo獲取 Request:
HttpServletRequest request= (HttpServletRequest) RpcContext.getContext().getRequest();
Dubbo獲取 Cookie數組:
HttpServletRequest request= (HttpServletRequest) RpcContext.getContext().getRequest();
Cookie[] cookies = request.getCookies();
Dubbo獲取 Cookie中的值:
public class RpcContextUtil {
/**
* 獲取cookie中的信息
* @param key
* @return
*/
public static String getFromCookie(String key) {
String value = "";
if (StringUtils.isEmpty(key)) {
return value;
}
//獲取request
HttpServletRequest request= (HttpServletRequest) RpcContext.getContext().getRequest();
//從request中獲取Cookie數組
Cookie[] cookies = request.getCookies();
if (cookies == null) {
return value;
}
//從cookie數組中,獲取key對應的value
for (Cookie cookie: cookies) {
if (key.equals(cookie.getName())) {
value = cookie.getValue();
}
}
//解碼,如果不解碼,cookie中的空格有時會亂碼顯示成%20
try {
value = StringUtils.trim(URLDecoder.decode(value, "utf-8"));
} catch (UnsupportedEncodingException e) {
log.error("cookie info could not decode.key: {}, value: {}",key, value);
}
return value;
}
}