Проблема с кодом авторизации. Android Studio Java, подключение к API на Python
Пишу приложение-трекер для самолетов, в приложении должна быть авторизация, написал такой код:
package com.example.planetracler;
import static com.tinder.scarlet.websocket.okhttp.OkHttpClientUtils.newWebSocketFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ProcessLifecycleOwner;
import androidx.lifecycle.ViewModelProvider;
import com.example.Clases.LoginRequest;
import com.example.Clases.LoginResponse;
import com.example.Clases.LoginViewModel;
import com.example.Interface.WebSocketService;
import com.tinder.scarlet.Scarlet;
import com.tinder.scarlet.messageadapter.gson.GsonMessageAdapter;
import com.tinder.scarlet.streamadapter.rxjava2.RxJava2StreamAdapterFactory;
import java.security.cert.CertificateException;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import okhttp3.OkHttpClient;
public class MainActivity extends AppCompatActivity {
private LoginViewModel loginViewModel;
private WebSocketService webSocketService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Setup ViewModel
loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);
setupObservers();
// Setup SSL for self-signed certificate
SSLContext sslContext;
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) throws CertificateException {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) throws CertificateException {
}
}
};
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.sslSocketFactory(sslContext.getSocketFactory())
.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}).build();
Scarlet scarlet = new Scarlet.Builder()
.webSocketFactory(newWebSocketFactory(okHttpClient, "wss://10.0.2.2:8765"))
.addMessageAdapterFactory(new GsonMessageAdapter.Factory())
.addStreamAdapterFactory(new RxJava2StreamAdapterFactory())
.lifecycle(ProcessLifecycleOwner.get().getLifecycle())
.build();
webSocketService = scarlet.create(WebSocketService.class);
} catch (Exception e) {
e.printStackTrace();
}
final EditText usernameEditText = findViewById(R.id.input_login);
final EditText passwordEditText = findViewById(R.id.input_password);
final AppCompatButton loginButton = findViewById(R.id.login_btn);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginRequest.LoginData loginData = new LoginRequest.LoginData();
loginData.username = usernameEditText.getText().toString();
loginData.password = passwordEditText.getText().toString();
LoginRequest loginRequest = new LoginRequest();
loginRequest.action = "login";
loginRequest.data = loginData;
webSocketService.sendLogin(loginRequest);
}
});
}
private void setupObservers() {
loginViewModel.getLoginResponse().observe(this, new Observer<LoginResponse>() {
@Override
public void onChanged(LoginResponse loginResponse) {
if (loginResponse.status.equals("success")) {
Toast.makeText(MainActivity.this, "Login Successful!", Toast.LENGTH_SHORT).show();
// Handle successful login
} else {
Toast.makeText(MainActivity.this, "Login Failed!", Toast.LENGTH_SHORT).show();
// Handle unsuccessful login
}
}
});
}
}
Но получаю ошибку в 77 строке:
Scarlet scarlet = new Scarlet.Builder()
.webSocketFactory(newWebSocketFactory(okHttpClient, "wss://10.0.2.2:8765"))
.addMessageAdapterFactory(new GsonMessageAdapter.Factory())
.addStreamAdapterFactory(new RxJava2StreamAdapterFactory())
.lifecycle(ProcessLifecycleOwner.get().getLifecycle())
.build();
Вот ошибка:
addMessageAdapterFactory(com.tinder.scarlet.MessageAdapter.Factory) in
com.tinder.scarlet.Scarlet.Builder cannot be applied to
(com.tinder.scarlet.messageadapter.gson.GsonMessageAdapter.Factory).
Уже все перепробовал, может, кто сталкивался?