Я пытаюсь создать приложение для Android, которое будет взаимодействовать с сервером по протоколу http. Я использую Retrofit для отправки запроса GET на сервер, но всегда получаю следующую ошибку:
java.net.UnknownServiceException: CLEARTEXT communication to http://demo5373349.mockable.io/ not permitted by network security policy
Хотя при попытке доступа к серверу через https такой проблемы не возникает, я также буду писать на стороне сервера и должен использовать http.
Вот код:
private TextView textView;
private EditText editText;
private Button getButton;
private Retrofit retrofit;
private ServerConnection connection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
retrofit = new Retrofit.Builder()
.baseUrl("http://demo5373349.mockable.io/")
.addConverterFactory(GsonConverterFactory.create())
.build();
connection = retrofit.create(ServerConnection.class);
textView = findViewById(R.id.textView);
editText = findViewById(R.id.editText);
getButton = findViewById(R.id.buttonGET);
getButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getHandler();
}
});
}
private void getHandler(){
connection.sendGET().enqueue(new Callback<Message>() {
@Override
public void onResponse(Call<Message> call, Response<Message> response) {
if(response.isSuccessful()) {
textView.setText(response.body().toString());
}else {
textView.setText("Server Error");
}
}
@Override
public void onFailure(Call<Message> call, Throwable t) {
textView.setText("Connection Error");
}
});
}
И интерфейс:
public interface ServerConnection {
@GET("./")
Call<Message> sendGET();
}