java - 如何从外部源创建字符串资源?

标签 java android

我正在尝试访问本地主机中的 .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)

最佳答案

response.read() 返回一个 int,即响应的单个字节。

在 Toast 之前,您需要将流响应转换为完整的字符串。

makeText 方法已重载,接受 R.string 资源 ID 作为第二个参数,这些资源是只读资源,无法在运行时创建

如果您只关心那一个字节,请参阅

Displaying integer on toast

关于java - 如何从外部源创建字符串资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49622267/

相关文章:

android - 项目由几个项目组成

java - 无法将按钮文本设置为 "<<<"

java - J2ME 中的数组列表?

Android:权限拒绝:需要 android.permission.INTERNET

android - 如何处理 MediaPlayer 和 BaseAdapter

java - 致命异常 : Async Task #1 with geocoder

android - 如何从所有者或Android上的gmail帐户获取电子邮件

java - 线程本地资源

java - 用SwingX的ImageView进行CollorAdjust?

java - "Export to JAR in Eclipse"能像 javac 一样智能吗?