2017. 9. 28. 10:46ㆍlanguage/java
Java HttpUrlConnection 으로 통신하기 / 파일 전송 및 수신 내용 참고
Java에서 특정 웹 사이트나 url을 호출하여 xml이나 json 방식을 리턴받아 사용할 경우가 있다.
restful 방식이나 openAPI 방식을 사용할 때 도 역시 필요하고
웹 크롤링을 할 경우에도 사용할 수 있다.
이번 포스팅은 파일을 전송받기 위해서 만들어 놓았던 간단한 http 통신을 하는 예제이다.
꼭 파일을 전송받기 위한 것이 아니라 Json, xml, text 등 다양하게 활용 가능하도록 포인트를 적어 두었다.
즉, 아래 예제는 특정 url을 호출하여 제공되는 정보를 가져오는 방법이다.
본 포스팅과 바이너리 변환 방법 포스팅을 참고하면 http 통신으로 파일을 주고 받을 수 있는 모듈을 만들 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
public String httpConnection(String targetUrl) {
URL url = null;
HttpURLConnection conn = null;
String jsonData = "";
BufferedReader br = null;
StringBuffer sb = null;
String returnText = "";
try {
url = new URL(targetUrl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Accept", "application/json");
conn.setRequestMethod("GET");
conn.connect();
br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
sb = new StringBuffer();
while ((jsonData = br.readLine()) != null) {
sb.append(jsonData);
}
returnText = sb.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnText;
} |
cs |
1# : http 통신을 하는 함수이다. 파라미터로 호출할 url 주소를 받는다.
2# : Url 객체이다.
3# : 통신할 HttpURLConnection 객체이다.
10# : 전달받은 url string 으로 URL 객체를 만든다.
12# : URL 객체로 connection 을 만든다.
13# : 해더 타입이다. 호출하려는 곳과 해더 타입이 맞지 않으면 오류가 발생한다. 호출하려는 곳에서 xml, json, html, text 등 리턴하는 타입을 확인하여 작성하여야 한다.
14# : 요청메소드이다. get이나 post 등 해당하는 메소드를 입력한다.
15# : 실제로 연결하는 부분이다.
17# : 결과를 InputStream으로 받아서 INputStreamReader, BufferedReader로 캐스팅한다.
21# : 전달받은 BufferedReader을 StringBuffer에 담는다.
25# : StringBuffer을 String으로 캐스팅한다. 여기서 캐스팅 된 String은 13#에서 선언한 타입과 일치한다.
각각 타입에 맞게 활용할 수 있다. Json이면 컬랙션으로, xml이면 Dom 객체로, 기타 Binary String이면 파일로...
본 예제는 Json으로 선언되어 있기 때문에 Json, text, Bynary String 등 일반 문자열들을 전달 받는다.
'language > java' 카테고리의 다른 글
Java 정규식 테스트 사이트 (0) | 2018.03.02 |
---|---|
java 비밀번호 정규식 (특수문자, 영문, 숫자) (0) | 2018.03.02 |
java 날짜 체크하기 (0) | 2018.02.23 |
JAVA BigDecimal 사칙연산(더하기, 빼기, 나누기, 곱하기), 비교 compareTo, 소수점 처리 (올림, 버림, 반올림) (0) | 2017.11.16 |
Java bean to map, vo to map, 객체를 Map으로 변환 (5) | 2017.09.29 |
Java 파일을 바이너리 스트링으로, 바이너리 스트링을 파일로 변환 / 파일 전송 (2) | 2017.09.28 |
JAVA List VO 정렬 Collections Sort Comparator 사용하기 (0) | 2017.09.04 |
java replace last 구현하기 (0) | 2017.02.08 |
Java | Byte 배열과 바이너리 String 문자열 간의 상호 변환 (0) | 2017.01.19 |
Java C Socket 통신, 파일전송 / C : Server / Java : Client (7) | 2017.01.18 |