如果提供了错误的登录凭据,如何避免在Android中挂起httpsURLConnection.getInputStream()?

前端之家收集整理的这篇文章主要介绍了如果提供了错误的登录凭据,如何避免在Android中挂起httpsURLConnection.getInputStream()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果在此处设置了身份验证凭据,如果提供的用户/密码正确,则一切正常,但如果它们不正确则会挂起.这不是服务器问题,我使用Curl和浏览器检查,不正确的凭据立即返回401:
Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user,password.tocharArray());
        }
    });

挂起的代码在这里,它挂起在这一行:in = new BufferedReader(new InputStreamReader(httpURLConn.getInputStream())); (没有例外,它只停留在这条线上)

try {
        URL url = new URL(resourceUrl);
        HttpURLConnection httpURLConn = (HttpURLConnection) url.openConnection();
        String rawData = "";
        String currentLine = null;
        BufferedReader in = null;

        in = new BufferedReader(new InputStreamReader(httpURLConn.getInputStream()));
        while ((currentLine = in.readLine()) != null) {
            rawData = rawData.concat(currentLine);
        }
        in.close();
    } catch (UnknownHostException e) {
        Log.i(CLASS_NAME + "::" + METHOD_NAME,"An exception occured while reading data from remote host. httpURLConn.responseCode = " + httpURLConn.getResponseCode()
                + " / httpURLConn.responseMessage = " + httpURLConn.getResponseMessage(),e);
        throw new UnknownHostException();
    } catch (IOException e) {
        Log.i(CLASS_NAME + "::" + METHOD_NAME,e);
        throw new IOException();
    }

解决方法

可能是服务器保持连接活动(Keep-Alive标头)?
原文链接:https://www.f2er.com/android/314905.html

猜你在找的Android相关文章