使用Inputstream-Scanner

问题描述

我目前正在使用一个Android应用,该应用接受请求的网站的内容并在其中搜索某些单词。 我不确定如何将InputStream转换为String。 我是一个没有经验的人,所以我想我的代码有点难看:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private AppBarConfiguration mAppBarConfiguration;
String EanCode;
String FddbData;
InputStream stream;

public void Urlconnect() {                                                                   

    final Thread ConnectThread = new Thread(new Runnable(){
        public void run(){
            try {
                URL url = new URL("https://fddb.info/db/de/suche/?udd=0&cat=site-de&search=" + EanCode);
                URLConnection connection = url.openConnection();
                InputStream stream = (InputStream) connection.getContent();
                StreamToString();


            } catch (Exception e){
                e.printstacktrace();
            }
        }
    });
    ConnectThread.start();

}

2:

    public void StreamToString() throws IOException {

    Scanner scanner = new Scanner(stream);
    StringBuffer sb = new StringBuffer();

    while(scanner.hasNext()){
        sb.append(scanner.toString());
    }

    Logger logger = Logger.getLogger(MainActivity.class.getName());
    logger.info(sb.toString() + "bananeneis");

    FddbData = sb.toString();
}

}

这是我得到的错误

W/System.err:     at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
    at java.util.Scanner.<init>(Scanner.java:568)
    at com.example.prepper.MainActivity.StreamToString(MainActivity.java:22)
    at com.example.prepper.MainActivity$4.run(MainActivity.java:9)
    at java.lang.Thread.run(Thread.java:764)

感谢您的帮助!

EDIT 2:通过删除

中的 InputStream 解决
 URLConnection connection = url.openConnection();
 InputStream stream = connection.getContent();
 StreamToString();

解决方法

您需要将English: 2019-08-30T08:20:59.126394500 formats to Aug 30,2019,8:20 AM and parses back to 2019-08-30T08:20 2020-08-29T08:20:59.126394500 formats to Aug 29,8:20 AM and parses back to 2020-08-29T08:20 2020-08-30T08:20:59.126394500 formats to 8:20 AM and parses back to 2020-08-30T08:20 French: 2019-08-30T08:20:59.126394500 formats to 30 août 2019 08:20 and parses back to 2019-08-30T08:20 2020-08-29T08:20:59.126394500 formats to 29 août 08:20 and parses back to 2020-08-29T08:20 2020-08-30T08:20:59.126394500 formats to 08:20 and parses back to 2020-08-30T08:20 German: 2019-08-30T08:20:59.126394500 formats to 30.08.2019,08:20 and parses back to 2019-08-30T08:20 2020-08-29T08:20:59.126394500 formats to 29.08,08:20 and parses back to 2020-08-29T08:20 2020-08-30T08:20:59.126394500 formats to 08:20 and parses back to 2020-08-30T08:20 Japanese: 2019-08-30T08:20:59.126394500 formats to 2019/08/30 8:20 and parses back to 2019-08-30T08:20 2020-08-29T08:20:59.126394500 formats to 08/29 8:20 and parses back to 2020-08-29T08:20 2020-08-30T08:20:59.126394500 formats to 8:20 and parses back to 2020-08-30T08:20 传递给stream。目前,该方法正在一个不同的,不相关的变量上操作,该变量也使 令人困惑,名为StreamToString

  1. 更改

    stream

    public void StreamToString() throws IOException {
    
  2. 更改

    public void StreamToString(final InputStream stream) throws IOException {
    

    StreamToString();
    
,

尝试将InputStream stream;设置为全局变量。我看不到close()方法,因此将其插入StreamToString();方法之后以关闭打开的流,或者在while循环之后插入close()。祝你好运:)