[英]Cannot read from InputStream
我当前的代码是这样的:
try {
inputStream is = (new URL(urlpath).openStream());
ByteArrayOutputStream os = new ByteArrayOutputStream();
for (int len; (len = is.read(data)) != -1;) {
os.write(data, 0, len);
}
os.flush();
data = os.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
但是is.read(data)
始终返回-1
。 我不明白为什么它不起作用。 我在其他地方使用了相同的代码,但仍有效,但是在此应用程序中,此代码不起作用。 网址路径应该是什么问题?
您说此代码旨在在服务器上运行,但可以在您的本地环境中运行。 它不起作用的原因是因为服务器还提供了一个localhost
地址,并且该资源仅在您的本地环境中。 将localhost
更改为资源所在的主机的IP地址,您的代码将起作用。
http://localhost...
<-将告诉代码在运行代码的同一台计算机上查找,这就是服务器找不到它的原因。
将localhost
更改为运行Web应用程序的资源的IP地址(xxx.xxx.xxx.xxx)。
因此,如果Web应用程序托管在192.168.0.100
则可以执行以下操作:
http://192.168.0.100:8080/School/abc.jsp?selectedLetter=d~2015012200001~NOTICE~%27%27
请注意,由于服务器需要访问外部资源才能与Web应用程序对话,因此防火墙规则也会起作用(您需要确保任何防火墙都不会阻止Web应用程序正在其上运行的主机上的端口8080)。
如果没有更多要读取的数据,InputStream将返回-1。
有关更多详细信息,请参见http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte []) 。
尝试这个
InputStream is = url.openConnection().getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader( is ) );
String line = null;
while( ( line = reader.readLine() ) != null ) {
System.out.println(line);
}
reader.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.