【问题标题】:UrlConnection.getInputStream() returns an exception that is null in JavaUrlConnection.getInputStream() 返回 Java 中为 null 的异常
【发布时间】:2015-07-19 19:34:16
【问题描述】:

我有以下java代码

try {
    String u = "http://webapi.com/demo.zip";
    URL url = new URL(u);
    URLConnection ucon = url.openConnection();
    InputStream is = ucon.getInputStream();
}
catch (Exception e) {
    Log.d('downloaderror', e.getMessage());
}

但由于某种原因,InputStream is = ucon.getInputStream() 导致错误并触发了 catch 块。而当 catch 块被触发时,e 的值为null

有人知道我的ucon.getInputStream() 有什么问题吗?我知道http://webapi.com/demo.zip 存在,因为我可以从我的网络浏览器下载文件。

编辑 这是 ucon.getInputstream() 上的堆栈跟踪

java.lang.Exception
            at com.example.instantramenz.samplewebview.MainActivity$1.onClick(MainActivity.java:94)
            at android.view.View.performClick(View.java:4633)
            at android.view.View$PerformClick.run(View.java:19270)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5602)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • e 的值是null 或者打印的字符串包含文本null(即消息是null)?
  • e 的值为空。然后 null.getMessage() 导致应用程序崩溃后
  • 请发布堆栈跟踪。如果我没记错的话,catch-block 中的异常永远不会是null
  • 如果你得到null 作为异常参数的值,你就会遇到更大的问题。我会重新打开,但请尝试 @ElliottFrisch 的建议并使用不同的 http 客户端,您可以在其中轻松检查状态代码和响应正文。
  • 1.没有InputStream.getInputStream()这样的方法。 2. 抛出异常,不返回。 3. 抛出的异常永远不会为空,但它们的消息可以。 4. 你应该记录异常本身,而不仅仅是它的消息。

标签: java inputstream


【解决方案1】:

我通过在下载文件之前放置这行代码来解决问题:

            android.os.StrictMode.ThreadPolicy policy = new android.os.StrictMode.ThreadPolicy.Builder().permitAll().build();
            android.os.StrictMode.setThreadPolicy(policy);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多