Я пытался использовать библиотеку веб-сокетов OKHTTP для получения данных из моего API, но я не могу получить данные.может кто-нибудь дать мне представление о том, что мне не хватает.Я не нашел ошибки при его создании.
При выполнении кода ошибка, которую я получаю на своем устройстве, предполагает ожидаемый отклик http 101, но составляет 200ok.
Даже если проблему не удается решить, может кто-нибудь порекомендовать мне любую другую библиотеку веб-сокетов для загрузкиданные с сервера.
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();
}
}