본문 바로가기
public void static main()/Etc

[Network] HttpURLConnection 와 URL class

by 햄리뮤 2021. 1. 8.
반응형

어제 오늘 회사에서 써본거 다시 복습겸! 공부!

정확히좀 알고 지나가자! 지금부터 구글링 시작!

 

오늘 공부할 키워드!

(그냥 내가 오늘 공부하고싶은 키워드!)

1. HttpURLConnection

2. URL class

3. bufferedreader 

4. inputstream 

5. StringBuffer 

6. URLEncoder 

7. StringUtils 

이정도!

대표사진하려고 들고옴!! [출처] https://medium.com/@alialhaddad/build-a-e-commerce-site-using-mern-stack-step-4b-finish-testing-post-put-delete-fc3426e5e94

 

1. HttpURLConnection (대부분 goddaehee.tistory.com/161개발자님 블로그 참고!)

- java.net.HttpURLConnection클래스는 URLConnection을 구현한 클래스.

(java.net클래스에서 제공하는 URL요청을 위한 클래스)

- URLConnection은 웹을 통해 데이터를 주고 받는데 사용된다.

- 데이터의 타입이나 길이는 거의 제한이 없다.

- 주로 미리 길이를 알지 못하는 스트리밍 데이터를 주고 받는데 사용된다.

- http URL을 처리할 때 도움이 되는 추가적인 메서드를 가지고있다.

- 요청 방식을 확인 or 설정, redirect여부 결정, 응답 코드와 메시지를 read, 프록시 서버가 사용되었는지 여부 확인 메서드 등을 가지고있다.(오~ 나중에 한개씩 써먹어보자~)

- 다양한 HTTP 응답 코드에 해당하는 상수 값들이 정의되어있다.

- URLConnection클래스의 getPermission() 메소드를 오버라이드 해놓았다.

 

참고한 블로거님께서 중요하게 생각하셨는지 별표로 된부분 발견! (나는 꽃으로!)

 

🔆URLConnection 클래스와 마찬가지로 생성자가 protected로 선언되어있기 때문에 기본적으로는 개발자가 직접 HttpURLConnection 객체를 생성할 수 없다.

하지만 http URL을 사용하는 URL 객체의 openConnection() 메소드가 리턴하는 URLConnection객체는 HttpURLConnection의 인스턴스가 될 수 있기 때문에 리턴된 URLConnection을

다음처럼 HttpURLConnection으로 캐스팅해서 사용한다.

(오~~ 대박 그렇구나 약간 어렵지만 아래 내코드에있는 부분이군!)

 

일단 나는 이 HttpURLConnection을 활용하여 REST API를 호출하였다!

// 지나가는 고수개발자님... 제가 툴을 사용해서 쓴게 아니라 티스토리 코드블럭삽입으로
// 걍 쓴거여서... 틀릴수도있어요... 궁금하신분들은 툴에 직접 옮겨서 문법 에러등등 꼭 확인하세요!

String apiUrl = "google.com"; // 예시로 구글!
URL url = new URL(apiUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET"); // GET방식의 호출!
code = con.getResponseCode();

if (200 == code) {
	System.out.println("성공!")
} else {
	System.out.println("실패!");
}

// Naver Developers에서는 이런식으로 하셨다!(궁금하신분은 밑에 출처중 네이버 출처확인!)
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) { // 정상 호출
	br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else {  // 에러 발생
	br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
con.disconnect();
br.close();

🔴요청방식 관련 주의점도 알려주셨다!🔴

 

⚠ HttpURLConnection은 기본적으로 GET 메소드를 사용.

⚠ setRequestMethod()를 사용해서 메소드 변경 가능.

⚠ 요청방식은 대문자로 전달해야한다.

⚠ 지정된 요청 방식 이외의 파라미터 전달시 java.net.ProtocolException 발생!

⚠ 요청 메소드 종류

1. HEAD - 문서의 헤더 정보만 요청한다.

2. GET - 웹 서버로부터 리소스를 가져온다.

3. POST - 폼에 입력된 내용을 서버로 전송한다.

4. DELETE

- 웹서버의 리소스를 지운다.

- 대부분의 서버는 기본적으로 DELETE를 허용하지 않거나 인증을 요구한다.

- 서버는 이 요청을 거절하거나 인증을 요청할 수 있으며, 허용하는 경우에도 응답은 구현에따라 차이가 있다.

- 서버설정에 따라 파일을 지우기, 휴지통으로 이동, 파일을 읽을 수 없도록 표시하는 등의 행위를 하게 된다.

5. PUT

- 웹 서버로 리소소를 전송한다.

- PUT 요청에도 파일을 지울 때와 마찬가지로 보통 사용자 인증을 요구하며, PUT메소드를 지원하도록 설정해줘야 한다.

6. OPTIONS

- 특정 URL에 대해 지원되는 요청 메소드의 목록을 리턴한다.

- 요청 URL이 *인 경우 해당 요청의 대생은 서버에 있는 하나의 특정 URL이 아니라 서버 전체에 적용된다는 것을 의미한다.

7. TRACE

- 요청을 추적한다.

- 클라이언트가 보낸 요청이 클라이언트와 서버 사이에 있는 프록시 서버에서 변경되었는지를 확인할 필요가 있는 경우 등에 쓰임.

goddaehee.tistory.com/161 블로그님최고!굉장해엄청나!

이 외에도  엄청 자세히 나와있으니! 더 알고싶으시면 해당 블로그를 참조하자!!

 

con.getResponseCode() 에서 성공여부의 코드를 읽어와서

성공했는지 실패했는지 처리!

 

HttpURLConnection 관련 블로그를 더 찾아보니까 이런거도 있었다!

 

// 서버에 연결되는 Timeout시간 설정.

con.setConnectTimeout(5000);

// InputStream 읽어오는 Timeout 시간설정.

con.setReadTimeout(5000);

 

2. URL class

- java.net.URL 클래스

- 웹 상에 존재하는 자원(Source)에 접근할 때 사용

- 자원의 유일한 주소를 나타내기 위한 기능을 제공해주는 클래스

- 자바 내의 URL을 처리하고 싶을때 사용

 

🟢URL 클래스의 대표 메소드

메소드명 설명
String getHost() 호스트 이름 리턴
String getPort() 포트 이름 리턴
String getFile() 파일 이름 리턴
String getProtoclo() 프로토콜 이름 리턴
InputStream openConnection() URL에 접속한 정보를 읽기 위한 InputStream 객체 리턴

 

1번할때 너무 열심히 해서 그런지 2번 너무 대충한거같다 (맞긴하지만) 너무짧자나;;

아무튼

와 힘들다 3~7번은 내일해야지~

 

공부에 도움을 주신 모든 굉장해 엄청나 분들 너무너무 감사합니다!! 여러분 덕분에 공부할수있었어요!😁😀😃

 

[출처] goddaehee.tistory.com/161

 

[Java] URLConnection & HttpURLConnection

[Java] URLConnection & HttpURLConnection 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ URLConnection & HttpURLConnection 입니다. : ) 들어가기에 앞서 왜 해당 내용을 공부했고, 어떤 곳에 활용 할 수 있는..

goddaehee.tistory.com

[출처] digitalbourgeois.tistory.com/57

 

[JAVA] HttpURLConnection로 REST API 호출하기

이번 페이지에서는 HttpURLConnection을 이용해 REST API를 호출하는 방법을 알아보자. [GET] public void get(String strUrl) { try { URL url = new URL(strUrl); HttpURLConnection con = (HttpURLConnection)..

digitalbourgeois.tistory.com

[출처] developers.naver.com/docs/common/openapiguide/apicall.md

 

https://developers.naver.com/docs/common/openapiguide/apicall.md

 

developers.naver.com

[출처] m.blog.naver.com/PostView.nhn?blogId=tndus0450&logNo=220153206530&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[네트워크] URL클래스와 URLConnection 클래스

<url클래스> - java.net.URL 클래스- 웹(World Wide Area) 상에 존재하는 자원(Source)에 ...</url클래스>

blog.naver.com

** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.

이곳 저곳에서 구글링한 것과 강의들은

내용이 정리가 되었습니다.

그림들은 그림밑에 출저표시를 해놓았습니다.

문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **

반응형

'public void static main() > Etc' 카테고리의 다른 글

[OS] 메모리 영역  (0) 2022.02.01
[Swagger] 스웩! 췤!  (0) 2022.01.29
[Redis] Redis란?  (0) 2021.11.18
[npm] npm이란  (0) 2021.05.05
[Gradle] Gradle은 무엇일까나  (0) 2021.05.05

댓글