java - android使用websocket無法訪問cookie。
問題描述
我的java服務(wù)端為了分清各個(gè)用戶使用session里的用戶名做了區(qū)分,html頁(yè)面使用沒有問題,但是在android端訪問的時(shí)候取不到cookie值。
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {if (request instanceof ServletServerHttpRequest) { ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; // 鏈接webSocket時(shí)傳遞的參數(shù) 標(biāo)識(shí)是否是特定分組, 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<String> params = servletRequest.getServletRequest().getParameterNames(); while (params.hasMoreElements()) {String param = params.nextElement();attributes.put(param, servletRequest.getServletRequest().getParameter(param)); }} }}return true; }
//websocket建立
WebSocketClient websocket;/** * 與服務(wù)器建立websocket連接 */private void websocket() { new Thread(new Runnable() {@Overridepublic 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<String, String> hashMap = new HashMap<String, String>();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();}
問題解答
回答1:他沒傳吧,自定義的loginUserInfo需要android手動(dòng)傳
回答2:你好,請(qǐng)問一下Android怎么自定義的loginUserInfo手動(dòng)傳?
相關(guān)文章:
1. angular.js - angularjs的自定義過濾器如何給文字加顏色?2. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?3. dockerfile - 為什么docker容器啟動(dòng)不了?4. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問題 麻煩幫我看一下5. macos - mac下docker如何設(shè)置代理6. javascript - web網(wǎng)頁(yè)版app返回上一頁(yè)按鈕在ios設(shè)備失效怎么辦?安卓上可以,代碼如下,請(qǐng)大神幫助,萬分感謝。7. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?8. mysql - AttributeError: ’module’ object has no attribute ’MatchType’9. javascript - webapp業(yè)務(wù)流程基本一致,多套主題(樣式基本不一樣,交互稍有偏差)管理,并且有不斷有新增主題,該如何設(shè)計(jì)組件化架構(gòu)?10. javascript - es6中this
