Все хорошо работает, только есть одна проблема, не могу отправить запрос на сервер по нажатию кнопки(Button).
Привожу пример кода:
Код: Выделить всё
package com.example.socketio_client;
import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;
import java.net.MalformedURLException;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SocketIO socket;
Button btn;
btn = (Button) findViewById(R.id.btn);
OnClickListener oclbtn = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
socket.send("Hello"); // Не работает
}
};
btn.setOnClickListener(oclbtn);
try{
System.out.println("Initializing Connection.");
socket = new SocketIO("http://192.168.56.100:8080/");
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 + "'");
}
}
);
try {
// This line is cached until the connection is established.
System.out.println("Sending message to server.");
socket.send("user message");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.send("Hello"); // Так работает
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
}
}
Cannot refer to the non-final local variable socket defined in an enclosing scope
Вопрос, как мне по нажатию кпопки сделать запрос на сервер?
