所以我的程序有这个相当奇怪的问题。我尝试做的是检查URL的Content-Length
,然后在非静态方法中使用此数字,并使用if-else语句连接其他类。但我的问题是,当我研究互联网以某种方式解决这个问题时,我可以使用这些静态方法来获取contentLength,它不适用于非静态。所以我尝试了但是我从来没有真正得到任何结果。我基本上尝试做的是在另一个类中使用static-method通过非静态方法调用类,我想这不应该是问题(或者应该?我不知道,因为我从来没有之前使用过静态方法。然后我使用此代码来确定更改日期的随机网页的contentLength:
public static void main() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(new Date()); // Now use today date.
c.add(Calendar.DATE, 1); // Adding 1 day
String output = sdf.format(c.getTime());
try {
String urlStr = "http://www.sasintern.de/show_pdf.php?fn=" + output + ".pdf";
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
int contentLength = httpConn.getContentLength();
if (contentLength < 2000) {
new NotWorkingActivity();
System.out.println("unknown content length");
} else {
new download2Activity();
System.out.println("content length: " + contentLength + " bytes");
}
InputStream inStream = httpConn.getInputStream();
// now read data
// ...
// close connection
httpConn.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
之后,当确定页面大小小于2000字节时,它应该在另一个类中显示Toast,该页面不可用,但是当它更大时,它应该打开一个新类,正如你在else语句中看到的那样。 但它不起作用,我想我只是搞乱了静态方法。我对他们没有经验。对不起我可能犯的任何其他错误。如果我的问题有一个不同的解决方案,希望更容易理解和更好地使用,我将非常感激。
拜托,我需要帮助解决这个问题,希望你能理解我的目标。 在此先感谢:)
答案 0 :(得分:1)
阅读手册
http://docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#getContentLength() public int getContentLength()
返回content-length头字段的值。
并非所有资源都设置了Content-Length标头。因此,您需要获取输入流并读取所有字节,直到最后计算它们。