#java #spring #spring-boot
Вопрос:
Вот мой код, мне интересно, почему я не получаю исключение MalformedURLException по этому поводу, при неправильном URL-адресе он просто выводит Site is Down, когда это должен быть неправильный URL. Может быть, я неправильно понимаю исключение, например, я подумал https://goofdggle.djaosi неправильный URL-адрес, но моя фишка в том, что возвращаемый сайт недоступен, когда он должен быть неправильным URL. Кстати, это приложение для загрузки Spring.
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class URLCheckController {
private String siteup = "Site is up!";
private String sitedown = "Site is down";
private String incorrectURL = "Incorrect URL!";
@GetMapping("/check")
public String getURLStatusMessage(@RequestParam String url) {
String returnMessage = "";
try {
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
conn.setRequestMethod("GET");
conn.connect();
int responseCategory = conn.getResponseCode() / 100;
if(responseCategory != 2 amp;amp; responseCategory != 3) {
returnMessage = sitedown;
} else {
returnMessage = siteup;
}
} catch (MalformedURLException e) {
returnMessage = incorrectURL;
} catch (IOException e) {
returnMessage = sitedown;
}
return returnMessage;
}
}
Комментарии:
1. Ваш пример не является неправильным URL-адресом. TLD не существует, да (по крайней мере, публично), но это все еще допустимый формат. В конце концов, вы могли бы настроить частный сервер имен, который мог бы разрешить этот TLD.
2. @dunni Можете ли вы привести пример неправильного TLD?
3. Я не думаю java.net . URL проверяет синтаксис TLD. Если вы используете неподдерживаемый протокол, вы получите исключение MalformedURLException.
4. Недопустимый URL-адрес будет, например.
http::/google.com