java.io.IOException异常:已收到认证挑战是空 [英] java.io.IOException: Received authentication challenge is null

查看:406
本文介绍了java.io.IOException异常:已收到认证挑战是空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要得到回应code,但它抛出一个IOException异常。我不知道发生什么事了!

尝试
    {
        URL =新的URL(urlBuilder.toString());
        康恩=(HttpURLConnection类)url.openConnection();
        conn.setDoInput(真);
        conn.setConnectTimeout(TIME_OUT);
        conn.setRequestMethod(METHOD_GET);
        conn.setRequestProperty(接受,* / *);
        conn.connect();
        INT响应code = conn.getResponse code(); //抛出IOException:收到的认证挑战是空
        如果(响应code == HTTP_OK)
        {
            inStream中= conn.getInputStream();
            响应= GETRESPONSE(插播广告);
        }
        其他
        {
            响应=响应code:+响应code;
        }
    }赶上(例外五)
    {
        Ë扔掉;
    }
    最后
    {
        conn.disconnect();
    }
    返回响应;
}

IOException异常是:

20 05-03:14:01.577:WARN / System.err的(1515):java.io.IOException异常:接收认证挑战为null
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.577:信息/ QQWeiBo(1515):接收的验证挑战是空
05-03 20:14:01.577:WARN / System.err的(1515):java.io.IOException异常:收到的认证挑战是空
05-03 20:14:01.577:WARN / System.err的(1515):java.io.IOException异常:收到的认证挑战是空
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponse$c$c(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity $ 1.onClick(MainActivity.java:71)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View.performClick(View.java:2408)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponse$c$c(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity $ 1.onClick(MainActivity.java:71)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View.performClick(View.java:2408)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596:WARN / System.err的(1515):在org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponse$c$c(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596:WARN / System.err的(1515):在com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606:WARN / System.err的(1515):在com.szy.weibo.MainActivity $ 1.onClick(MainActivity.java:71)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View.performClick(View.java:2408)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View $ PerformClick.run(View.java:8816)
05-03 20:14:01.616:WARN / System.err的(1515):在android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627:WARN / System.err的(1515):在android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invokeNative(本机方法)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View $ PerformClick.run(View.java:8816)
05-03 20:14:01.616:WARN / System.err的(1515):在android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627:WARN / System.err的(1515):在android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invokeNative(本机方法)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647:WARN / System.err的(1515):在dalvik.system.NativeStart.main(本机方法)
05-03 20:14:01.606:WARN / System.err的(1515):在android.view.View $ PerformClick.run(View.java:8816)
05-03 20:14:01.616:WARN / System.err的(1515):在android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627:WARN / System.err的(1515):在android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627:WARN / System.err的(1515):在android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invokeNative(本机方法)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647:WARN / System.err的(1515):在dalvik.system.NativeStart.main(本机方法)
05-03 20:14:01.627:WARN / System.err的(1515):在java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647:WARN / System.err的(1515):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647:WARN / System.err的(1515):在dalvik.system.NativeStart.main(本机方法)


解决方案

大多数情况下,你可以通过你的连接,第二次上调用.getResponse code()得到响应code。这是混淆了我在第一,但如果你读HttpURLConnectionImpl足够的时间你的眼睛会止血,看到了真相......

如果您修改code以这种方式,你会得到响应code:

 尝试
    {
        URL =新的URL(urlBuilder.toString());
        康恩=(HttpURLConnection类)url.openConnection();
        conn.setDoInput(真);
        conn.setConnectTimeout(TIME_OUT);
        conn.setRequestMethod(METHOD_GET);
        conn.setRequestProperty(接受,* / *);
        conn.connect();
        INT响应code = conn.getResponse code(); //抛出IOException:收到的认证挑战是空
        如果(响应code == HTTP_OK)
        {
            inStream中= conn.getInputStream();
            响应= GETRESPONSE(插播广告);
        }
        其他
        {
            响应=响应code:+响应code;
        }
    }赶上(例外五)
    {
        //在这里你可以得到正确的响应code
        如果(参数conn!= NULL){
            INT响应codeAfterException = conn.getResponse code();
            //根据新的响应code手柄
        }
        //也许不扔e如果401?
        Ë扔掉;
    }
    最后
    {
        conn.disconnect();
    }
    返回响应;
}

请参阅响应codeAfterException。

I need get a response code, but it's throw a IOException. I don't know what's the matter!

try
    {
        url = new URL(urlBuilder.toString());
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoInput(true);
        conn.setConnectTimeout(TIME_OUT);
        conn.setRequestMethod(METHOD_GET);
        conn.setRequestProperty("accept", "*/*");
        conn.connect();
        int responseCode = conn.getResponseCode();   //throw IOException:Received authentication challenge is null
        if (responseCode == HTTP_OK)
        {
            inStream = conn.getInputStream();
            response = getResponse(inStream);
        }
        else
        {
            response = "response code:"+responseCode;
        }
    } catch (Exception e)
    {
        throw e;
    }
    finally
    {
        conn.disconnect();
    }
    return response;
}

the IOException is :

05-03 20:14:01.577: WARN/System.err(1515): java.io.IOException: Received authentication challenge is null
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.577: INFO/QQWeiBo(1515): Received authentication challenge is null
05-03 20:14:01.577: WARN/System.err(1515): java.io.IOException: Received authentication challenge is null
05-03 20:14:01.577: WARN/System.err(1515): java.io.IOException: Received authentication challenge is null
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity$1.onClick(MainActivity.java:71)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View.performClick(View.java:2408)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1694)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity$1.onClick(MainActivity.java:71)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View.performClick(View.java:2408)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649)
05-03 20:14:01.596: WARN/System.err(1515):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:1374)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.SyncHttp.httpGet(SyncHttp.java:72)
05-03 20:14:01.596: WARN/System.err(1515):     at com.szy.weibo.service.Weibo.getRequestToken(Weibo.java:45)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.startWebView(MainActivity.java:95)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity.authorization(MainActivity.java:83)
05-03 20:14:01.606: WARN/System.err(1515):     at com.szy.weibo.MainActivity$1.onClick(MainActivity.java:71)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View.performClick(View.java:2408)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View$PerformClick.run(View.java:8816)
05-03 20:14:01.616: WARN/System.err(1515):     at android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627: WARN/System.err(1515):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invokeNative(Native Method)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View$PerformClick.run(View.java:8816)
05-03 20:14:01.616: WARN/System.err(1515):     at android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627: WARN/System.err(1515):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invokeNative(Native Method)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647: WARN/System.err(1515):     at dalvik.system.NativeStart.main(Native Method)
05-03 20:14:01.606: WARN/System.err(1515):     at android.view.View$PerformClick.run(View.java:8816)
05-03 20:14:01.616: WARN/System.err(1515):     at android.os.Handler.handleCallback(Handler.java:587)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 20:14:01.627: WARN/System.err(1515):     at android.os.Looper.loop(Looper.java:123)
05-03 20:14:01.627: WARN/System.err(1515):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invokeNative(Native Method)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647: WARN/System.err(1515):     at dalvik.system.NativeStart.main(Native Method)
05-03 20:14:01.627: WARN/System.err(1515):     at java.lang.reflect.Method.invoke(Method.java:521)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 20:14:01.647: WARN/System.err(1515):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 20:14:01.647: WARN/System.err(1515):     at dalvik.system.NativeStart.main(Native Method)

解决方案

Most often, you can get a response code by calling .getResponseCode() on your connection a second time. This was confusing for me at first, but if you read HttpURLConnectionImpl enough times your eyes will stop bleeding and see the truth...

If you modify your code in this way, you will get the response code:

try
    {
        url = new URL(urlBuilder.toString());
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoInput(true);
        conn.setConnectTimeout(TIME_OUT);
        conn.setRequestMethod(METHOD_GET);
        conn.setRequestProperty("accept", "*/*");
        conn.connect();
        int responseCode = conn.getResponseCode();   //throw IOException:Received authentication challenge is null
        if (responseCode == HTTP_OK)
        {
            inStream = conn.getInputStream();
            response = getResponse(inStream);
        }
        else
        {
            response = "response code:"+responseCode;
        }
    } catch (Exception e)
    {
        // Here you can get the correct response code
        if (conn != null) {
            int responseCodeAfterException = conn.getResponseCode();
            // Handle according to new response code
        }
        // Maybe don't throw e if 401?
        throw e;
    }
    finally
    {
        conn.disconnect();
    }
    return response;
}

See responseCodeAfterException.

这篇关于java.io.IOException异常:已收到认证挑战是空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆