https://velog.io/@doomchit_3/Internet-HTTP-%EA%B0%9C%EB%85%90%EC%B0%A8%EB%A0%B7-IMBETPY
[Internet] HTTP? 개념잡기 통신과정-IMBETPY
⚔ HTTP란? 대량의 정보가 흐르는 곳이라면 언제나 효율적인 교류를 위한 규칙이 존재한다. 예를들어 주식시장에서 거래를 하고 싶다면 이름, 계좌, 거래일자, 금액 등 정해진 규칙을 지켜 거래를
velog.io
https://goodgid.github.io/HTTP-Communicate-Process/
HTTP을 사용한 통신 과정
Index
goodgid.github.io
DNS로 url 이름가지고 ip찾는거랑 네트워크 계층이랑 연결되니까 뭔가 재밌다.
[Kotlin] 10장. 앱 개발 - 네트워크
이것이 안드로이드다 with 코틀린(고돈호 지음)으로 공부한 내용 정리
velog.io
https://www.york.ac.uk/teaching/cws/wws/webpage1.html
webpage1
STARTING . . . There are lots of ways to create web pages using already coded programmes. These lessons will teach you how to use the underlying HyperText Markup Language - HTML. HTML isn't computer code, but is a language that uses US English to enable te
www.york.ac.uk

위 서버 ip가 168.126.63.1이라 wire shark에서도 168.126.63.1이 찍힌다.


밑 왼쪽이 16진수인건 알겠는데 오른쪽이 뭔지 모르겠음. 두고두고 수정하거나 글 쓰면서 분석해봐야 할듯.
jsoup 이라는게 있어서 html의 tag들을 element 단위로 불러오는게 있다.
System.currentTimeMillis()
val html = Jsoup.parse(output.toString())
val tags = html.select("img, script")
when (src.split(".").last()) {
"png", "gif", "jpg" -> imageList.add(src.split("/").last())
"css", "js" -> codeList.add(src.split("/").last())
}


이미 불러왔던 페이지를 한번 더 불러오면 캐시된걸 불러와서 출력표시가 조금 다르다.
string을 많이 불러올경우 stringbuilder를 사용하는게 메모리적으로 효율적이다.
set으로 하는것도 있지만 list의 distinct().count() 로 하는 방법도 있음.
//각 tag마다 따로 처리
private fun downloadFromTag(tagName: String, tags: Elements) {
when (tagName) {
"script" -> {
tags.forEach {
download(it.attr("src"), false)
}
}
"img" -> {
tags.forEach {
download(it.attr("src"), false)
}
}
"link" -> {
tags.forEach {
download(it.attr("href"), false)
}
}
}
}
하는 방법도 있음.
http 받는걸 비동기로도 받을 수 있음. 여기선 굳이 필요없었지만 유용할 듯.
/**
* http 리퀘스트를 보내고 response 받는 함수
* await 을 통해 비동기 리턴값 받음
*/
private suspend fun fetchUrl(url: String): HttpResponse<String> {
totalFetchCount++
val uri = URI(url)
val request = HttpRequest.newBuilder().uri(uri)
.build()
val response = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())
return response.await()
}
'강의 > 부캠 안드로이드 학습정리' 카테고리의 다른 글
day 18 SQL DB 만들기 (0) | 2021.08.12 |
---|---|
day 17. 안드로이드 view 만들기 (0) | 2021.08.10 |
커피타임 (0) | 2021.08.06 |
day 14. 본격적인 비동기화 혼합 사용과 클래스 다이어그램의 중요성 (0) | 2021.08.06 |
day 13. 네트워크 지식들.. (0) | 2021.08.04 |