1

I tried using OKHTTP web socket library to get data from my API but I cant get the data. can someone give me any idea on what I am missing. I found no error when building it.

When running the code the error I get on my device is expected http 101 response but was 200ok.

Even if the problem cannot be solved can anyone recommend me any other web socket library to fetch data from the server.

private TextView test;
private Button start;
private OkHttpClient client;
private static final String TAG = "WebSocketTest";


public final class WebSocketListener extends okhttp3.WebSocketListener{
    private static final int NORMAL_CLOSURE_STATUS = 1000;

    @Override
    public void onOpen(WebSocket webSocket, Response response) {
        Log.d(TAG, "Open");
    }

    @Override
    public void onMessage(WebSocket webSocket, String text) {
        //System.out.println("MESSAGE: " + text);



        Log.d(TAG, "MESSAGE: " + text);
        JSONObject jsonObject = null;

        try {
            jsonObject = new JSONObject(text);
        } catch (JSONException ex) {
            ex.printStackTrace();
        }

        if (jsonObject != null) {
            try {
               String  lat = jsonObject.getString("latitude");
                String lon = jsonObject.getString("longitude");

                test.setText("Your Location is:" + lat + "--" + lon);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

        @Override
    public void onMessage(WebSocket webSocket, ByteString bytes) {
        output("Receiving bytes : " + bytes.hex());
    }

    @Override
    public void onClosing(WebSocket webSocket, int code, String reason) {
        webSocket.close(NORMAL_CLOSURE_STATUS, null);
    }

    @Override
    public void onClosed(WebSocket webSocket, int code, String reason) {
        super.onClosed(webSocket, code, reason);
    }

    @Override
    public void onFailure(WebSocket webSocket, Throwable t, @Nullable Response response) {
        output("Error : " + t.getMessage());
    }
}

private void output(final String txt) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            test.setText(test.getText().toString() + "\n\n" + txt);
        }
    });
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_socket_test);
    test = findViewById(R.id.txt_test);
    start = findViewById(R.id.btn_start);
    client = new OkHttpClient();

  start.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          start();
      }
  });
}

private void start() {
   Request request = new Request.Builder().url("ws://192.168.100.70:9000/location").build();
    WebSocketListener listener = new WebSocketListener();
    client.newWebSocket(request, listener);
    client.dispatcher().executorService();
}


}
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

0 Answers0