URL 구조
http : //www.naver.com/
URL의 구조는 다음과 같이 프로토콜식별자(:)과 자원 이름(//www.naver.com/)으로 나누어진다.
자원의 이름은 다시 //www.myhom.net/index.html:8080 다음과 같은 형식으로 구성되는데 여기서
//www.myhom.net/은 호스트 이름, index.html은 파일 이름, :8080은 포트 번호로 나누어지게 된다.
https://hackeen.tistory.com/18
URL 객체를 생성하는 방법은 2가지가 있다
1. 절대경로를 이용하거나
2. 상대경로를 이용하거나
package PackageEx; import java.net.MalformedURLException; import java.net.URL; public class WrapperEx { public static void main(String[] args) { URL opinion = null; URL homepage = null; try { homepage = new URL("http://news.hankooki.com"); // 절대 경로로 생성 opinion = new URL(homepage, "opinion/deitorial.htm"); // 상대 경로로 생성 } catch (MalformedURLException e) { System.out.println("잘못된 URL입니다."); } System.out.println("Protocol = " + opinion.getProtocol()); // 프로토콜 출력 System.out.println("host =" + opinion.getHost()); // 호스트 이름 출력 System.out.println("port =" + opinion.getPath()); // 포트 번호 출력 System.out.println("filename =" + opinion.getFile()); |
특정 프로토콜, 호스트 구하기
URL url = new URL("http://www.example.com:80/search?=Java"; //프로토콜 구하기 String protocal = url.getProtocol(); => "http" //호스트명 구하기 String host = url.getHost(); => "www.example.com" //포트번호 구하기 int port = url.getPort(); => 80 //파일 이름( 경로+쿼리 문자열 ) 구하기 String file = url.getFile(); => "/search?=Java" //경로 구하기 String path = url.getPath(); => "/search" //쿼리 문자열 구하기 (URL이 쿼리 문자열을 포함하지 않는 경우는 null) String query = url.getQuery(); => "q=Java" |
https://hclee2575.tistory.com/167
https://hclee2575.tistory.com/167
httpURLConnection을 하는 이유는 외부서버와 통신하기 위해서
https://yeonyeon.tistory.com/77
https://hjink247.tistory.com/26
https://lee-mandu.tistory.com/399?category=633570
https://euntori7.tistory.com/235
https://zincod.tistory.com/101
https://devday.tistory.com/m/1990?category=233331
https://mainpower4309.tistory.com/23
https://javacan.tistory.com/entry/35
httpConnection은 기본적으로 단일요청.
하나의 connection으로 여러 요청을 보낼려면 Apache HttpClient 같은 라이브러리를 사용해야 한다.
그런거 아니면 무조건 하나의 요청을 보내고 연결끈고 새로운 connection요청
HttpURLConnection 기본설정
- httpConn.setRequestMethod("GET"); //요청 방식 설정 (GET/POST 등)
- httpConn.setRequestProperty("key","value"); // request Header 설정 key-value 형식으로 다양한 요청 설정이 가능하다.
- httpConn.setConnectTiomeOut(1000); //서버 연결 제한 시간
- httpConn.setReadTimeOut(1000); // 서버 연결 후 데이터 read 제한 시간
URL요청후 미리선언한 만큼 대기하고 응답이 없다면 exception을 반환하고 작업을 마치는데
이때 발생하는 exception은 SockTimeoutException이다.
각 설정에 따른 exception 메시지는 아래와 같다.
- ConnectTimeOut 발생시 connect time out
- ReadTimeOut 발생 시 Read time out
실제로 위 설정을 통하여 간헐적이던 배치 중단 현상을 해결하였다.
https://limdevbasic.tistory.com/14
url 클래스 객체의 생성자는 MalformedURLException예외를 throws하여 예외처리에 대한 책임을 전가하고 있다.
MalformedURLException은 생성자의 인자로 받은 url문자열이 null이거나 프로토콜을 알수 없을때 발생
https://jckim-dev.tistory.com/13