Как правильно закодировать URL-адрес для Retrofit? ⇐ Android
-
Гость
Как правильно закодировать URL-адрес для Retrofit?
Я пытаюсь выполнить запрос GET. В браузере работает без проблем. Однако при использовании Retrofit я получаю эту ошибку: (строка — это идентификатор комнаты)
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: для входной строки: "!ucXjVyXiDeXwFuYFAN:matrix.org"
Это моя функция
Private void getMessages(String token) { МетодыChat методы = RetrofitClient.getRetrofitInstance().create(MethodsChat.class); String total_url = "https://matrix-client.matrix.org/_matri ... /v3/rooms/" + "!ucXjVyXiDeXwFuYFAN:matrix.org" + "/initialSync?limit=20&access_token="+токен; System.out.println(total_url); Call call = методы.getAllData(total_url); call.enqueue(new Callback() { @SuppressLint("SetTextI18n") @Override public void onResponse(@NonNull Call call, @NonNull Response ответ) { если (response.isSuccessful()) { // Делаем потрясающие вещи утверждать ответ.body() != ноль; Сообщения messages = response.body().getMessages(); List items = messages.getChunk(); тост(items.get(0).getContent().getBody()); } еще если (response.code() == 429) { // Обработка несанкционированного доступа тост(ответ.сообщение()); } еще { тост(ответ+" "); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { Log.d("error_contact", t.toString()); тост("нет сети"); // ЗДЕСЬ ЗАРЕГИСТРИРУЕТСЯ ОШИБКА } }); } Я думаю, это может быть потому, что оно не закодировано. Я попробовал несколько способов, которые искал на этой платформе, но ни один из них мне не помог. Я также попробовал использовать URLencoder, но он выдал ту же ошибку. Я почти уверен, что это потому, что строку нужно как-то закодировать. Хотя я не знаю как.
Я пытаюсь выполнить запрос GET. В браузере работает без проблем. Однако при использовании Retrofit я получаю эту ошибку: (строка — это идентификатор комнаты)
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: для входной строки: "!ucXjVyXiDeXwFuYFAN:matrix.org"
Это моя функция
Private void getMessages(String token) { МетодыChat методы = RetrofitClient.getRetrofitInstance().create(MethodsChat.class); String total_url = "https://matrix-client.matrix.org/_matri ... /v3/rooms/" + "!ucXjVyXiDeXwFuYFAN:matrix.org" + "/initialSync?limit=20&access_token="+токен; System.out.println(total_url); Call call = методы.getAllData(total_url); call.enqueue(new Callback() { @SuppressLint("SetTextI18n") @Override public void onResponse(@NonNull Call call, @NonNull Response ответ) { если (response.isSuccessful()) { // Делаем потрясающие вещи утверждать ответ.body() != ноль; Сообщения messages = response.body().getMessages(); List items = messages.getChunk(); тост(items.get(0).getContent().getBody()); } еще если (response.code() == 429) { // Обработка несанкционированного доступа тост(ответ.сообщение()); } еще { тост(ответ+" "); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { Log.d("error_contact", t.toString()); тост("нет сети"); // ЗДЕСЬ ЗАРЕГИСТРИРУЕТСЯ ОШИБКА } }); } Я думаю, это может быть потому, что оно не закодировано. Я попробовал несколько способов, которые искал на этой платформе, но ни один из них мне не помог. Я также попробовал использовать URLencoder, но он выдал ту же ошибку. Я почти уверен, что это потому, что строку нужно как-то закодировать. Хотя я не знаю как.
Мобильная версия