[Java] java.net.MalformedURLException: no protocol

Q0. 개요

JAVA 로직에서 API를 호출하다보면 아래와 같은 에러가 발생한다.

java.net.MalformedURLException: no protocol

이는 호출할 URI에 https:// 또는 http:// 프로토콜 주소가 없을 경우에 발생된다.

 

 

Q1. 이때 URL과 URI란 뭘까

URI : 인터넷에서 특정 자원을 나타내는 주소값
식별자. 예를 들면 www.naver.com

URL : 인터넷에서 특정 자원이나 파일의 위치를 나타내는 주소값
위치. http:// 또는 https://라는 Scheme(스킴)이 앞에 붙은 것. ( 예를 들면 http://www.naver.com )  

언급했던 URI나 URL과 같은 주소를 상세하게 분리하면 아래와 같은 구조를 가지고 있다.

하지만, Origin이라는 URL구조에서 프로토콜 + 호스트 + 포트를 합친 개념으로 보면,

host는 호스트 + 도메인 ( www.testpage.com )이라고 볼 수 있다.
origin은 프로토콜 + 호스트 + 포트 ( https://www.testpage.com:8080 )
href는 URL과 동일

 

 

 

 

Q2. 결론적으로

JAVA에서는 API 주소를 찾을 때, URL형식을 맞춰서 찾아야 한다.