通过GET(REST)获取来自其他战争的会话调用的属性

时间:2016-05-11 16:20:47

标签: java rest session get httpurlconnection

我想获得战争会话的属性(战争A)。 这场战争(战争A)有一个REST服务,返回这个属性。

然后从其他战争(战争B),我呼吁战争A的服务。

战争A的服务代码是:

@Path("/emulado")
@RequestScoped
public class EmuladoRS {
@GET
@Produces("application/json")
@Secure
public EmuladoDTO getAtributtes(@Context HttpServletRequest         request) {
    String usuarioEmulado = "";
    String operatorId = "";

    HttpSession sesion = request.getSession();

    logger.info("El SessionID es: "+sesion.getId());
    SsgUser userAuthenticated = (SsgUser)sesion.getAttribute(ATTRIBUTENAMESESSIONUSERSSG);


        usuarioEmulado = String.valueOf(userAuthenticated.getId());


        operatorId = (String)  request.getSession().getAttribute(ATTRIBUTENAMESESSIONUSEREMULATE);


    EmuladoDTO emuladoDTO = new EmuladoDTO();
    emuladoDTO.setOperatorId(operatorId);
    emuladoDTO.setUsuarioEmulado(usuarioEmulado);

    return emuladoDTO;
}

在战争B中对此REST操作的调用是:

            String urlRestEmulado= scheme+"://"+ serverName +":" +String.valueOf(serverPort)+"/service/rs/emulado";
        URL url = new URL(urlRestEmulado); 
        HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

        connection.setRequestMethod("GET"); 
        connection.setRequestProperty("Cookie","JSESSIONID="+((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).getId()); 

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (connection.getInputStream())));


        String output = br.readLine();
        if (output!= "null") {
            System.out.println(output);
            JSONObject json = new JSONObject(output);
            emuladoDTO = new EmuladoDTO();
            this.emuladoDTO.setOperatorId(json.getString("operatorId"));
            this.emuladoDTO.setUsuarioEmulado(json.getString("usuarioEmulado"));

            if(this.emuladoDTO.getUsuarioEmulado()!=null&&this.emuladoDTO.getUsuarioEmulado().length()>0) this.usuarioEsEmulado=true;
            else this.usuarioEsEmulado=false;
        }

确定。问题是如果我通过GET使用REST控制台调用此REST操作或在同一选项卡中键入URL 。该操作返回存储在战争A会话中的正确数据。

{" operatorId":" operador"" usuarioEmulado":" 587"}

但是如果我从战争B中调用java,则返回的JSON有空数据(因为session的属性为null)。

{" operatorId":""" usuarioEmulado":""}

为什么我从战争B调用会话的属性为空,如果我打电话给de url,属性是否正常?

请帮助。

0 个答案:

没有答案