如果在此处设置了身份验证凭据,如果提供的用户/密码正确,则一切正常,但如果它们不正确则会挂起.这不是服务器问题,我使用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标头)?