IT/Java

java - Http 통신, URLConnection

노마드오브 2018. 11. 22. 22:02

package com.example.url;


import java.net.MalformedURLException;

import java.net.URL;


// URL 클래스를 이용해서 URL을 구성하는 

// 프로토콜 이름, 호스트 주소, 포트번호 등 각 부분을 확인

public class ParseURL {


public static void main(String[] args) {

URL url = null;

try {

URL naverNewURL = new URL("https://news.naver.com:80");

url = new URL(naverNewURL, "/main/list.nhn?mode=LSD&mid=sec&sid1=001");

} catch (MalformedURLException e) {

e.printStackTrace();

}

System.out.println("프로토콜:" + url.getProtocol());

System.out.println("호스트명:" + url.getHost());

System.out.println("포트번호:" + url.getPort());

System.out.println("경로부분:" + url.getPath());

System.out.println("파일이름:" + url.getFile());

}


}




package com.example.url;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;


public class URLRead {


public static void main(String[] args) {

// https://www.nate.com 사이트에서 보내주는

// 웹페이지를 읽어서 출력하기

BufferedReader reader = null;

try {

URL url = new URL("https://www.nate.com");

reader = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8"));

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}


}




package com.example.url;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class URLConnectionReader {

public static void main(String[] args) {
// URLConnection 객체를 이용하여
// https://www.daum.net 사이트에서 보내주는
// 웹페이지를 읽어서 출력하기
BufferedReader reader = null;
try {
URL url = new URL("https://www.daum.net");
URLConnection con = url.openConnection(); // URL 객체에서 URLConnection
// 입력 스트림 생성
reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

}



package com.example.url;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;

//URLConnection을 이용해서 웹서버에 데이터 보내고
//웹 서버로부터 응답 데이터를 받아서 화면에 출력하기
//http://httpbin.org/get
//http://httpbin.org/post

public class URLConnectionWriter {

public static void main(String[] args) {
OutputStreamWriter writer = null;
BufferedReader reader = null;
try {
//URL url = new URL("http://httpbin.org/post");
URL url = new URL("http://localhost/jspstudy/jsp7/URLService.jsp");
URLConnection con = url.openConnection();
// GET/POST 메소드 요청방식 설정
// POST 요청 설정함
// post 요청일 때 URL주소에 쿼리스트링을 붙이지 않음!
con.setDoOutput(true); // 기본값은 false(GET방식), true(POST방식) 
// 출력스트림 생성
writer = new OutputStreamWriter(con.getOutputStream(), "utf-8");
// 서버에 데이터보내기
// & 문자로 파라미터를 구분
String firstname = "길동";
String lastname = "홍";
String encFirstname = URLEncoder.encode(firstname, "utf-8");
String encLastname = URLEncoder.encode(lastname, "utf-8");

            // 받는쪽에서
//          String str = URLDecoder.decode("깨진문자열", "utf-8");
String parameters = "Firstname="+encFirstname+"&Lastname="+encLastname; 
System.out.println(parameters);
writer.write(parameters);
writer.flush(); // 버퍼 비우기를 통해 요청작업으로 서버로 데이터 내보내기
// 입력스트림 생성
reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}