Как создать строковый ресурс из внешнего источника?

Я пытаюсь получить доступ к файлу .php на локальном хосте:

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try  {
                    System.err.println("It's working ok?");
                    String url = "http://192.168.0.112/hlsystems/api/fetch.php";
                    String charset = "UTF-8";  // Or in Java 7 and later, use the constant: java.nio.charset.StandardCharsets.UTF_8.name()
                    String param1 = "value1";
                    String param2 = "value2";
                    String query = "";

                    try {
                        query = String.format("param1=%s&param2=%s",
                                URLEncoder.encode(param1, charset),
                                URLEncoder.encode(param2, charset));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }

                    URLConnection connection = null;
                    try {
                        connection = new URL(url + "?" + query).openConnection();
                        connection.setRequestProperty("Accept-Charset", charset);
                        InputStream response = connection.getInputStream();
                        System.err.println(response.read());
                        Toast.makeText(mainContext, response.read(),
                                Toast.LENGTH_LONG).show();
                    } catch (IOException e) {
                        e.printStackTrace();
                        Toast.makeText(mainContext, e.toString(),
                                Toast.LENGTH_LONG).show();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        thread.start();

Когда я запускаю его, я получаю следующую ошибку:

W/System.err: android.content.res.Resources$NotFoundException: String resource ID #0x22

Как я должен предварительно определить строку внутри XML-файла, если я получаю ее из внешнего источника / веб-сервера?

Полный журнал:

W/System.err: 123
W/ResourceType: No package identifier when getting value for resource number 0x00000022
W/System.err: android.content.res.Resources$NotFoundException: String resource ID #0x22
W/System.err:     at android.content.res.Resources.getText(Resources.java:250)
W/System.err:     at android.widget.Toast.makeText(Toast.java:268)
W/System.err:     at com.hlsystems.ericsonwillians.saltodepirapora.MainActivity$2.run(MainActivity.java:89)
W/System.err:     at java.lang.Thread.run(Thread.java:841)

Пожалуйста, опубликуйте полный журнал

Cao Minh Vu 03.04.2018 06:32

Пожалуйста, добавьте полную трассировку стека. Кроме того, я бы предложил использовать http-библиотеку, созданную для Android, а не сырые потоки и urlconnection.

OneCricketeer 03.04.2018 06:32

Добавлен. Вы имеете в виду, что это не делается вручную? : p Я думал, что URLConnection было та самая "библиотека".

Ericson Willians 03.04.2018 06:35

Urlconnection - это встроенный класс Java. Библиотека будет Okhttp или Volley

OneCricketeer 03.04.2018 06:37

Кроме того, пожалуйста, не размещайте ругательства в своих выводах журнала.

OneCricketeer 03.04.2018 06:39

Ой, беда, забыл об этом.

Ericson Willians 03.04.2018 06:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

response.read() возвращает int, единственный байт ответа.

Вам необходимо преобразовать ответ потока в полную строку, прежде чем подавать тост.

Метод makeText перегружен, чтобы принимать идентификаторы ресурсов R.string в качестве второго параметра, которые являются ресурсами только для чтения, и вы не можете создавать их во время выполнения.

Если вас интересует только один байт, см.

Отображение целого числа на тосте

Другие вопросы по теме