본문 바로가기
JAVA & Spring/Error

[Spring] java.net.MalformedURLException: no protocol 에러 해결 방법

by 알기 쉬운 코딩 사전 2024. 11. 15.
반응형

🚨 Srping 실행 후 URL 처리 시 발생한 에러 메시지

java.net.MalformedURLException: no protocol: 
at java.base/java.net.URL.<init>(URL.java:674) ~[na:na]
at java.base/java.net.URL.<init>(URL.java:569) ~[na:na]
at java.base/java.net.URL.<init>(URL.java:516) ~[na:na]

 

❓에러 발생 이유

URL을 전송할 때 protocol이 빠져있거나, URL이 공백으로 전달되면 나타나는 에러 메시지입니다.

예를들어 URL을 https://httpbin.org/post 형식으로 전달해야 하지만
httpbin.org/post 또는 ""로 전달할 경우에 나타나는 에러 메시지입니다.

 

✅ 해결 방법

URL을 전송하는 부분에서 정상적인 URL을 전송합니다.

아래 이미지와 소스코드를 참고해 주세요.

 

비정상 URL 전송 응답 결과

공백인 URL 전송 / protocal이 없는 URL 전송



 

🌟 정상 URL 전송 응답 결과

정상 URL 전송

 

Spring 전체 소스 코드

package hello.test.controller;

import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.net.MalformedURLException;
import java.net.URL;

@RestController
@RequiredArgsConstructor
public class UrlExceptionController {
    @GetMapping("/url")
    public TestUrlResponse Url(@RequestBody TestUrlRequest request) {
        try {
            URL url = new URL(request.url);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
        return new TestUrlResponse(request);
    }

    @Data
    static class TestUrlRequest {
        private String url;
    }

    @Data
    static class TestUrlResponse {
        private String url;

        public TestUrlResponse(TestUrlRequest request) {
            this.url = request.getUrl();
        }
    }
}

 

반응형

댓글