728x90
반응형
회사에서 하던 업무를 다시 복기해볼 겸 간단한 예제를 만들어 정리해본다.
0. 목적
아무튼 서버에 있는 JsonData를 읽어오기
1. 서버
FastAPI에서 요청이 들어왔을때 Json을 반환하게 해 주었다.
@app.get("/user-data")
def user_data(request : Request):
print(request)
file_path = "./static/Sample.json"
f = open(file_path, 'r')
data = json.loads(f.read())
return JSONResponse(content = data)
서버에 static디렉토리에 json파일을 만들어 넣어두고 다 읽어서 반환하게 했다.
2. 데이터
간단하게 만들었다.
[{
"ID": "KR-203424124",
"Mail": "jaindoe@testmain.com",
"Age": 23
},
{
"ID": "US-213112421",
"Mail": "johndoe@testmain.com",
"Age": 11
}
]
브라우저에서 잘 나오는 것도 확인했다.
3. 코틀린에서 요청
fun main() {
var connURL = "https://제_도메인은_소중하니까요!/user-data";
var url = URL(connURL);
val conn = url.openConnection() as HttpURLConnection;
conn.requestMethod = "GET";
conn.connectTimeout = 150000;
conn.readTimeout = 150000;
var charset = Charset.forName("UTF-8")
var br= BufferedReader(InputStreamReader(conn.inputStream, charset))
var sb = StringBuilder()
if (conn.responseCode == HttpURLConnection.HTTP_OK) {
while(true) {
val line = br.readLine() ?: break;
sb.append(line)
}
}
println(sb.toString())
}
생각보다 심플하다.
url을 만들고 방식은 GET방식으로 요청한다.(서버에서 GET으로 했으니까)
이후 timeout을 설정하고 UTF-8인코딩으로 설정한다.
var br= BufferedReader(InputStreamReader(conn.inputStream, charset))
InputStreamReader로 서버에 요청을 하고 그 결과를 BufferedReader로 가져온다.
이후 안전하게 응답 코드로 응답이 멀쩡한지 확인하고 데이터를 쌓아서 출력한다.
4. 결과
잘 나오긴 한다. 실제 데이터 사용에서는 pretty를 해줄 필요는 없어서 그냥 내버려두었다.
728x90
반응형
'JAVA > Kotlin' 카테고리의 다른 글
코틀린 클래스에서 기본 생성자가 있는 클래스의 상속 (1) | 2023.10.22 |
---|---|
Kotlin의 TODO (0) | 2023.10.05 |
코틀린 Int? Number? (0) | 2022.11.19 |