UPDATEIOException이 : AsyncTask를 이미지 다운로드 코 틀린 안드로이드 (잘못된 파일 설명자) 디버깅 후
, 나는 주어진 코드에서 Catch 블록은 예외 예외없이 실행 얻을 것을 찾을 수 있습니다. 일부 값을 반환하는 입력 스트림을 인쇄합니다. 이벤트 비트 맵 varibale은 초기화되지만 catch 블록을 실행하면 onPostExecute 메서드에 null을 반환합니다.
왜 이런 일이 일어나고 있는지 알아보십시오.
Please check debug screenshot of studio
END 것은
것은 내가 안드로이드 스튜디오 3.0을 사용하고 있습니다.
AsyncTask 클래스 및 HTTPURLConnection 클래스의 도움으로 http 프로토콜 url에서 이미지를 다운로드하는 Kotlin Support로 간단한 Android 응용 프로그램을 만들었습니다.
AsyncTask 클래스를 실행하면 HTTPURLConnection 객체에서 http 응답 코드 200이 발생하지만 BitmapFactory.decodeStream (inputstream) 메서드로 스트림을 디코딩하는 동안 IOException이 발생합니다.
StackTrace는 다음과 같은 오류가 발생합니다. android.system.ErrnoException : recvfrom failed : EBADF,이 BitmapFactory.decodeStream (inputstream) 메서드를 호출하는 행과 같습니다.
override fun doInBackground(vararg args: String?): Bitmap? {
var bitmap: Bitmap? = null
try {
val url = URL(args[0])
val connection: HttpURLConnection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
connection.connectTimeout = 10 * 60 * 60
connection.readTimeout = 10 * 60 * 60
connection.doInput = true
connection.doOutput = true
connection.connect()
val responseCode = connection.responseCode
if (HTTP_OK == responseCode) {
if (null != connection.inputStream) {
val inputStream = connection.inputStream
connection.disconnect()
bitmap = BitmapFactory.decodeStream(inputStream)
}
}else{
Log.e("####","Error Response Code: ${responseCode}")
}
} catch (ex: IOException) {
Log.e("####",ex.localizedMessage)
} catch (ex: MalformedURLException) {
ex.printStackTrace()
} catch (ex: Exception) {
ex.printStackTrace()
}
return bitmap
}
'connection.disconnect()'내가 아직 스트림에서 읽을 원한다면 그렇게하지 않을 것입니다. – greenapps
이미 입력 스트림 참조를 수집했습니다 : 연결선을 끊기 전에 하지만 connection.disconnect()를 제거한 후에도 여전히 동일한 오류가 발생합니다. –
'connection.doOutput = true' 해당 명령문을 제거하십시오. 그것은 POST를위한 것입니다. – greenapps