cookie di socket.io-java-client / intestazioni personalizzate

Sto facendo un’app mobile per un sito web e usano Socket.io e Websocket per comunicare.

Sto usando socket.io-java-client su Android per connettermi al server Socket.io, il problema è che non so come impostare header / cookie personalizzati con esso.

ecco come appare il codice:

public void runIO(){ try { SocketIO socket = new SocketIO("http://192.168.1.60:1337"); socket.connect(new IOCallback() { @Override public void onMessage(JSONObject json, IOAcknowledge ack) { try { System.out.println("Server said:" + json.toString(2)); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onMessage(String data, IOAcknowledge ack) { System.out.println("Server said: " + data); } @Override public void onError(SocketIOException socketIOException) { System.out.println("an Error occured"); socketIOException.printStackTrace(); } @Override public void onDisconnect() { System.out.println("Connection terminated."); } @Override public void onConnect() { System.out.println("Connection established"); } @Override public void on(String event, IOAcknowledge ack, Object... args) { System.out.println("Server triggered event '" + event + "'"); } }); // This line is cached until the connection is establisched. socket.send("Hello Server!"); } catch (MalformsdURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

In effetti ci sono funzioni semplici che possono essere utilizzate per impostare le intestazioni prima della connessione:

addHeader(String key, String value) e setHeaders(Properties headers)

Puoi anche usare SocketIO(final String url, Properties headers) (invece di SocketIO(final String url) che stavo usando):

 // Haeader Properties initiation private Properties headers = new Properties(); 

e quindi ad esempio per impostare i cookie:

 headers.setProperty("Cookie","key=data;key2=data2"); 

Infine, quando si collega sostituire

 this.socket = new SocketIO(val); 

di

 this.socket = new SocketIO(val,this.headers);