问题描述
我目前正在使用一个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
。
-
更改
stream
到
public void StreamToString() throws IOException {
-
更改
public void StreamToString(final InputStream stream) throws IOException {
到
StreamToString();
尝试将InputStream stream;
设置为全局变量。我看不到close()
方法,因此将其插入StreamToString();
方法之后以关闭打开的流,或者在while循环之后插入close()
。祝你好运:)