카테고리 없음
인터파크API
멈추지않아
2022. 10. 10. 16:23
깃허브:https://github.com/kimdhj/teamProject
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class HttpUtil {
public static String callApi(String search, String country, String category, int maxResults, int start)
throws UnsupportedEncodingException {
search = URLEncoder.encode(search, "UTF-8");
URL url = null;
String readLine = null;
StringBuilder buffer = null;
OutputStream outputStream = null;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
HttpURLConnection urlConnection = null;
int connTimeout = 5000;
int readTimeout = 3000;
//발급 받은 키들 사용
String apikey = "S2JyKGPNI18HDfxe7lTxEg==";
String Inapikey = "51618F655CD09159A6844BD65A8B6F104E492CC6455C3F0DD667626EA7D32750";
// String apiUrl =
// "https://www.dlibrary.go.kr/openapi/call.do?dist_key="+apikey+"&func_id=3&sw="+type+"&sf="+center+"&cntPerPage=10";
// // 국가
// 변수 순서대로 발급받은키->검색할 키워드->검색할 카테고리번호->검색학 국가->최대 결과수->시작지점
String apiUrl = "http://book.interpark.com/api/search.api?key=" + Inapikey + "&query=" + search + "&categoryId="
+ category + "&output=json&searchTarget=" + country + "&maxResults=" + maxResults + "&start=" + start; // 인터파크
try {
url = new URL(apiUrl);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");//전송method
urlConnection.setConnectTimeout(connTimeout);//연결에 걸리는 최대시간 이후는 에러
urlConnection.setReadTimeout(readTimeout);//데이터를 읽어오는데 최대시간 이후는 에러
urlConnection.setRequestProperty("Content-Type", "application/json;");//내용이 json형식이라는 의미
urlConnection.setDoOutput(true);//put post 시 true 설정
urlConnection.setInstanceFollowRedirects(true);//리다이렉트 요청이 있으면 자동으로 따라갈지 말지 설정
outputStream = urlConnection.getOutputStream();// 데이터를 byte[]배열로 생성하고
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
bufferedWriter.flush();//현재내용을 전송하고 비워준다
buffer = new StringBuilder();//String보다 효율적이지만 동기화 안됨
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//urlconnection에서 데이터 받아와서 리더로 출력하고 스트링빌더에 하나씩 추가해가면서 string만들기
bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
while ((readLine = bufferedReader.readLine()) != null) {
buffer.append(readLine).append("\n");
}
} else {
buffer.append("\"code\" : \"" + urlConnection.getResponseCode() + "\"");
buffer.append(", \"message\" : \"" + urlConnection.getResponseMessage() + "\"");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (bufferedWriter != null) {
bufferedWriter.close();
}
if (outputStream != null) {
outputStream.close();
}
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
System.out.println("결과 : " + buffer.toString());
return buffer.toString();
}
}