android socket session,android使用websocket无法访问cookie。

我的java服务端为了分清各个用户使用session里的用户名做了区分,html页面使用没有问题,但是在android端访问的时候取不到cookie值。

public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,

Map attributes) throws Exception {

if (request instanceof ServletServerHttpRequest) {

ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;

// 链接webSocket时传递的参数 标识是否是特定分组, Null表明不是

//String type = (String) servletRequest.getServletRequest().getParameter("type");

HttpSession session = servletRequest.getServletRequest().getSession(false);

if (session != null) {

LoginUserInfo user = (LoginUserInfo) session.getAttribute("loginUserInfo");

// System.out.println("id");

// System.out.println(session.getId());

if (user != null) {

attributes.put("user", user);

//attributes.put("type", type);

Enumeration params = servletRequest.getServletRequest().getParameterNames();

while (params.hasMoreElements()) {

String param = params.nextElement();

attributes.put(param, servletRequest.getServletRequest().getParameter(param));

}

}

}

}

return true;

}

bVKjTb?w=199&h=71

//websocket建立

WebSocketClient websocket;

/**

* 与服务器建立websocket连接

*/

private void websocket() {

new Thread(new Runnable() {

@Override

public void run() {

//获取之前的登录信息

String Cookie = cookie.get(0).getName()+"="+cookie.get(0).getValue()+";"+ cookie.get(4).getName()+"="+cookie.get(4).getValue()+";"+ cookie.get(5).getName()+"="+cookie.get(5).getValue()+";";

application.setCookie(Cookie);

Log.i("", Cookie);

try {

HashMap hashMap = new HashMap();

hashMap.put("Cookie", Cookie);

// 这里的url不能带有http://

// 直接使用 xx.xx.xx.xx:端口

websocket = new WebSocketClient(new URI(HttpUrlS.WEBSOCKET), new Draft_17(), hashMap, 5000) {

@Override

public void onOpen(ServerHandshake handshakedata) {

Log.d("MyTAG", "WebSocketClient onOpen");

}

@Override

public void onMessage(final String message) {

//WebSocketUtil.handleMessage(message);

Log.i("", "有人说:" + message);

runOnUiThread(new Runnable() {

@Override

public void run() {

//Toast.makeText(MainActivity.this, "有人说:" + message, Toast.LENGTH_SHORT).show();

}

});

}

@Override

public void onClose(int code, String reason, boolean remote) {

Log.d("MyTAG", "close = " + reason);

}

@Override

public void onError(Exception ex) {

ex.printStackTrace();

Log.d("MyTAG", "onError = " + ex.toString());

}

};

websocket.connect();

} catch (URISyntaxException e) {

e.printStackTrace();

}

}

}).start();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值