API 와 JSON 추가
This commit is contained in:
parent
b9616eae65
commit
225723fe48
17
pom.xml
17
pom.xml
|
|
@ -17,6 +17,23 @@
|
|||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20160810</version>
|
||||
</dependency>
|
||||
|
||||
<!--<scope>provided</scope> provided로 지정하면 패키징시 제외됩니다. -->
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-jasper</artifactId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,207 @@
|
|||
package com.example.demo.config;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Iterator;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
|
||||
public class HttpUtil {
|
||||
|
||||
|
||||
public static void sendGet(String url) {
|
||||
|
||||
try {
|
||||
|
||||
URL u = new URL(url);
|
||||
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection();
|
||||
// httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
// httpCon.setDoOutput(true);
|
||||
// httpCon.setDoInput(true);
|
||||
httpCon.setRequestMethod("GET");
|
||||
|
||||
InputStream in = new BufferedInputStream(httpCon.getInputStream());
|
||||
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
|
||||
System.out.println(result);
|
||||
in.close();
|
||||
httpCon.disconnect();
|
||||
|
||||
} catch(Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 객체를 JSON 문자열로 POST 방식으로 전송한다.
|
||||
* @param url
|
||||
* @param object
|
||||
*/
|
||||
public static void sendObject2Json(String url, Object object) {
|
||||
|
||||
try {
|
||||
URL u = new URL(url);
|
||||
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection();
|
||||
httpCon.setRequestProperty("Content-Type", "application/json; charset=EUC-KR");
|
||||
httpCon.setDoOutput(true);
|
||||
httpCon.setDoInput(true);
|
||||
httpCon.setRequestMethod("POST");
|
||||
OutputStream raw = httpCon.getOutputStream();
|
||||
//OutputStream buffered = new BufferedOutputStream(raw);
|
||||
//OutputStreamWriter out = new OutputStreamWriter(buffered,"UTF-8");
|
||||
//OutputStreamWriter out = new OutputStreamWriter(buffered);
|
||||
//Object -> JSON
|
||||
String jsonStr = new Gson().toJson(object);
|
||||
System.out.println("ready to send : " + url);
|
||||
System.out.println("converted json data: \n" + jsonStr);
|
||||
//전송
|
||||
raw.write(jsonStr.getBytes("EUC-KR"));
|
||||
raw.flush();
|
||||
raw.close();
|
||||
|
||||
// read the response
|
||||
System.out.println(httpCon.getResponseCode());
|
||||
System.out.println(httpCon.getResponseMessage());
|
||||
|
||||
InputStream in = new BufferedInputStream(httpCon.getInputStream());
|
||||
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
|
||||
System.out.println(result);
|
||||
in.close();
|
||||
httpCon.disconnect();
|
||||
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 객체를 GET 파라미터 형식의 POST 방식으로 전송한다.
|
||||
* @param url
|
||||
* @param object
|
||||
*/
|
||||
public static void sendObject2Post(String url, Object object) {
|
||||
|
||||
try {
|
||||
URL u = new URL(url);
|
||||
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection();
|
||||
httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
httpCon.setDoOutput(true);
|
||||
httpCon.setDoInput(true);
|
||||
httpCon.setRequestMethod("POST");
|
||||
OutputStream raw = httpCon.getOutputStream();
|
||||
//OutputStream buffered = new BufferedOutputStream(raw);
|
||||
//OutputStreamWriter out = new OutputStreamWriter(buffered,"UTF-8");
|
||||
//OutputStreamWriter out = new OutputStreamWriter(buffered);
|
||||
//Object -> JSON
|
||||
String jsonStr = new Gson().toJson(object);
|
||||
System.out.println("ready to send : " + url);
|
||||
System.out.println("converted json data: \n" + jsonStr);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
JSONObject json = new JSONObject(jsonStr);
|
||||
Iterator<String> keys = json.keys();
|
||||
//sb.append("?"); //start of query args
|
||||
while (keys.hasNext()) {
|
||||
String key = keys.next();
|
||||
sb.append(key);
|
||||
sb.append("=");
|
||||
sb.append( URLEncoder.encode((String)json.get(key), "EUC-KR") );
|
||||
sb.append("&"); //To allow for another argument.
|
||||
}
|
||||
String queryStr = sb.toString();
|
||||
|
||||
System.out.println( "json to query :" + queryStr );
|
||||
|
||||
//전송
|
||||
raw.write(queryStr.getBytes("EUC-KR"));
|
||||
raw.flush();
|
||||
raw.close();
|
||||
|
||||
// read the response
|
||||
System.out.println(httpCon.getResponseCode());
|
||||
System.out.println(httpCon.getResponseMessage());
|
||||
|
||||
InputStream in = new BufferedInputStream(httpCon.getInputStream());
|
||||
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
|
||||
System.out.println(result);
|
||||
in.close();
|
||||
httpCon.disconnect();
|
||||
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 객체를 GET 파라미터 형식의 POST 방식으로 전송한다.
|
||||
* @param url
|
||||
* @param object
|
||||
*/
|
||||
public static void send2PostOrderId(String url, String moduleId, String orderId, String userId) {
|
||||
|
||||
try {
|
||||
URL u = new URL(url);
|
||||
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection();
|
||||
httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
httpCon.setDoOutput(true);
|
||||
httpCon.setDoInput(true);
|
||||
httpCon.setRequestMethod("POST");
|
||||
OutputStream raw = httpCon.getOutputStream();
|
||||
System.out.println("ready to send : " + url);
|
||||
|
||||
String queryStr = "moduleId=" + moduleId + "&" + "orderId=" + orderId + "&" + "userId=" + userId;
|
||||
|
||||
System.out.println( "json to query :" + queryStr );
|
||||
|
||||
//전송
|
||||
raw.write(queryStr.getBytes("EUC-KR"));
|
||||
raw.flush();
|
||||
raw.close();
|
||||
|
||||
// read the response
|
||||
System.out.println(httpCon.getResponseCode());
|
||||
System.out.println(httpCon.getResponseMessage());
|
||||
|
||||
InputStream in = new BufferedInputStream(httpCon.getInputStream());
|
||||
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
|
||||
System.out.println(result);
|
||||
in.close();
|
||||
httpCon.disconnect();
|
||||
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** 클라이언트 ip 추출
|
||||
PROXY SERVER 또는 LOAD BALANCER를 거치는 경우 ip가 접속하기 직전의 ip로 들어오게 된다.
|
||||
PROXY SERVER 또는 LOAD BALANCER를 거칠 경우 reuqest header의 HTTP_X_FORWARDED_FOR 키워드에 정보를 남김으로
|
||||
먼저 확인 후 없을 경우 request.getRemoteAddr()로 ip를 추출한다. */
|
||||
public static String getClientIp(HttpServletRequest request) throws Exception {
|
||||
String ip = request.getHeader("HTTP_X_FORWARDED_FOR");
|
||||
if ( StringUtils.isEmpty( ip ) ) {
|
||||
ip = request.getRemoteAddr();
|
||||
}
|
||||
return ip;
|
||||
}
|
||||
|
||||
}//end class
|
||||
|
|
@ -1,5 +1,19 @@
|
|||
package com.example.demo.controller;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
|
@ -7,11 +21,113 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||
@Controller
|
||||
public class JSPController {
|
||||
|
||||
@GetMapping("/hello")
|
||||
// @Value("${openApi.serviceKey}")
|
||||
// private String serviceKey;
|
||||
//
|
||||
// @Value("${openApi.callBackUrl}")
|
||||
// private String callBackUrl;
|
||||
//
|
||||
// @Value("${openApi.dataType}")
|
||||
// private String dataType;
|
||||
|
||||
@GetMapping("/list")
|
||||
public String home(Model model) {
|
||||
System.out.println("home controller start");
|
||||
model.addAttribute("name", "111111.");
|
||||
|
||||
model.addAttribute("start", "start....OK");
|
||||
|
||||
ResponseEntity<String> result = callForecastApi();
|
||||
// System.out.println(result);
|
||||
|
||||
JSONObject json = new JSONObject(result);
|
||||
model.addAttribute("name", result);
|
||||
|
||||
JSONArray jsonArr = new JSONArray( json.get("body").toString() );
|
||||
// System.out.println( jsonArr );
|
||||
|
||||
List<Object> list = new ArrayList<Object>();
|
||||
for ( int i = 0; i < jsonArr.length(); i++) {
|
||||
HashMap<String, String> map = new HashMap<String, String>();
|
||||
JSONObject obj = jsonArr.getJSONObject(i);
|
||||
map.put( "id", obj.getString("phone") );
|
||||
map.put( "name", obj.getString("name") );
|
||||
map.put( "phone", obj.getString("phone") );
|
||||
map.put( "address", obj.getString("phone") );
|
||||
map.put( "filepath", obj.getString("filepath") );
|
||||
list.add(map);
|
||||
}
|
||||
|
||||
model.addAttribute("list", list);
|
||||
return "hello";
|
||||
}
|
||||
|
||||
// public ResponseEntity<String> callForecastApi(
|
||||
// @RequestParam(value="base_time") String baseTime,
|
||||
// @RequestParam(value="base_date") String baseDate,
|
||||
// @RequestParam(value="beach_num") String beachNum ) {
|
||||
|
||||
public ResponseEntity<String> callForecastApi() {
|
||||
|
||||
HttpURLConnection urlConnection = null;
|
||||
InputStream stream = null;
|
||||
String result = null;
|
||||
|
||||
// String urlStr = callBackUrl +
|
||||
// "serviceKey=" + serviceKey +
|
||||
// "&dataType=" + dataType +
|
||||
// "&base_date=" + baseDate +
|
||||
// "&base_time=" + baseTime +
|
||||
// "&beach_num=" + beachNum;
|
||||
|
||||
String urlStr = "https://api.leejk0523.com/profile/user/all";
|
||||
|
||||
try {
|
||||
URL url = new URL(urlStr);
|
||||
|
||||
urlConnection = (HttpURLConnection) url.openConnection();
|
||||
stream = getNetworkConnection(urlConnection);
|
||||
result = readStreamToString(stream);
|
||||
|
||||
if (stream != null) stream.close();
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (urlConnection != null) {
|
||||
urlConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
return new ResponseEntity<>(result, HttpStatus.OK);
|
||||
}
|
||||
|
||||
/* URLConnection 을 전달받아 연결정보 설정 후 연결, 연결 후 수신한 InputStream 반환 */
|
||||
private InputStream getNetworkConnection(HttpURLConnection urlConnection) throws IOException {
|
||||
urlConnection.setConnectTimeout(3000);
|
||||
urlConnection.setReadTimeout(3000);
|
||||
urlConnection.setRequestMethod("GET");
|
||||
urlConnection.setDoInput(true);
|
||||
|
||||
if(urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
|
||||
throw new IOException("HTTP error code : " + urlConnection.getResponseCode());
|
||||
}
|
||||
|
||||
return urlConnection.getInputStream();
|
||||
}
|
||||
|
||||
/* InputStream을 전달받아 문자열로 변환 후 반환 */
|
||||
private String readStreamToString(InputStream stream) throws IOException{
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
|
||||
|
||||
String readLine;
|
||||
while((readLine = br.readLine()) != null) {
|
||||
result.append(readLine + "\n\r");
|
||||
}
|
||||
|
||||
br.close();
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,25 @@
|
|||
<title>Insert title here</title>
|
||||
</head>
|
||||
<body>
|
||||
${ name }
|
||||
|
||||
${ start } <br><br><br>
|
||||
|
||||
전체보기 <br>
|
||||
${ name } <br><br><br>
|
||||
|
||||
<c:forEach items="${list}" var="profile">
|
||||
<table border="1" bordercolor="blue" width ="50%" height="100">
|
||||
<thead>
|
||||
<tr align = "center" >
|
||||
<td><c:out value="${profile.id}" /></td>
|
||||
<td><c:out value="${profile.name}" /></td>
|
||||
<td><c:out value="${ profile.phone}" /></td>
|
||||
<td><c:out value="${ profile.address}" /></td>
|
||||
<td><c:out value="${ profile.filepath}" /><br></td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</c:forEach>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue