본문 바로가기
개발자 관련 공부/멀티캠퍼스

[API]연습

by 박나무 2022. 2. 18.
반응형

파파고 Text번역API

package com.mulcam.clova.controller;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class Clova_Papago_text {

	@GetMapping("/papagoform")
	public String papagoform() {
		return "papago_text_trans";
	}
	
	@ResponseBody
	@PostMapping("/papagotext")
	public String papagoText(@RequestParam("text") String text) {
		String clientId = "*******";//애플리케이션 클라이언트 아이디값";
	     String clientSecret = "*******";//애플리케이션 클라이언트 시크릿값";
	     try {
	         String utext = URLEncoder.encode(text, "UTF-8");
	         String apiURL = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
	         URL url = new URL(apiURL);
	         HttpURLConnection con = (HttpURLConnection)url.openConnection();
	         con.setRequestMethod("POST");
	         con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
	         con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
	         // post request
	         String postParams = "source=ko&target=en&text=" + utext;
	         con.setDoOutput(true);
	         DataOutputStream wr = new DataOutputStream(con.getOutputStream());
	         wr.writeBytes(postParams);
	         wr.flush();
	         wr.close();
	         int responseCode = con.getResponseCode();
	         BufferedReader br;
	         if(responseCode==200) { // 정상 호출
	             br = new BufferedReader(new InputStreamReader(con.getInputStream()));
	         } else {  // 오류 발생
	             br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
	         }
	         String inputLine;
	         StringBuffer response = new StringBuffer();
	         while ((inputLine = br.readLine()) != null) {
	             response.append(inputLine);
	         }
	         br.close();	
	         
	     	JSONObject jsonobj = new JSONObject(response.toString());
	     	JSONObject jsonmsg = (JSONObject) jsonobj.get("message");
	     	JSONObject jsonres = (JSONObject) jsonmsg.get("result");
	     	text = (String)jsonres.get("translatedText");
	         
	         // 전체 JSON -> 파씽 필요!
	         System.out.println(response.toString());
	     } catch (Exception e) {
	         System.out.println(e);
	     }
		return text;
	}
}

파파고 웹사이트 번역 API

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class PapagoTextTrans {
	public static void main(String[] args) {
		String clientId = "********";// 애플리케이션 클라이언트 아이디값";
		String clientSecret = "********";// 애플리케이션 클라이언트 시크릿값";

		try {
			String text = URLEncoder.encode("와우! 주말이다", "UTF-8");
			String apiURL = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
			URL url = new URL(apiURL);
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			con.setRequestMethod("POST");
			con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
			con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
			// post request
			String postParams = "source=ko&target=en&text=" + text;
			con.setDoOutput(true);
			DataOutputStream wr = new DataOutputStream(con.getOutputStream());
			wr.writeBytes(postParams);
			wr.flush();
			wr.close();
			int responseCode = con.getResponseCode();
			BufferedReader br;
			if (responseCode == 200) { // 정상 호출
				br = new BufferedReader(new InputStreamReader(con.getInputStream()));
			} else { // 오류 발생
				br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
			}
			String inputLine;
			StringBuffer response = new StringBuffer();
			while ((inputLine = br.readLine()) != null) {
				response.append(inputLine);
			}
			br.close();
			System.out.println(response.toString());
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}

객체 탐지 API

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class Object_Detect {
	  public static void main(String[] args) {

	        StringBuffer reqStr = new StringBuffer();
	        String clientId = "***********";//애플리케이션 클라이언트 아이디값";
	        String clientSecret = "**********";//애플리케이션 클라이언트 시크릿값";

	        try {
	            String paramName = "image"; // 파라미터명은 image로 지정
	            String imgFile = "object.jpg";
	            File uploadFile = new File(imgFile);
	            String apiURL = "https://naveropenapi.apigw.ntruss.com/vision-obj/v1/detect"; // 객체 인식
	            URL url = new URL(apiURL);
	            HttpURLConnection con = (HttpURLConnection)url.openConnection();
	            con.setUseCaches(false);
	            con.setDoOutput(true);
	            con.setDoInput(true);
	            // multipart request
	            String boundary = "---" + System.currentTimeMillis() + "---";
	            con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
	            con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
	            con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
	            OutputStream outputStream = con.getOutputStream();
	            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true);
	            String LINE_FEED = "\r\n";
	            // file 추가
	            String fileName = uploadFile.getName();
	            writer.append("--" + boundary).append(LINE_FEED);
	            writer.append("Content-Disposition: form-data; name=\"" + paramName + "\"; filename=\"" + fileName + "\"").append(LINE_FEED);
	            writer.append("Content-Type: "  + URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED);
	            writer.append(LINE_FEED);
	            writer.flush();
	            FileInputStream inputStream = new FileInputStream(uploadFile);
	            byte[] buffer = new byte[4096];
	            int bytesRead = -1;
	            while ((bytesRead = inputStream.read(buffer)) != -1) {
	                outputStream.write(buffer, 0, bytesRead);
	            }
	            outputStream.flush();
	            inputStream.close();
	            writer.append(LINE_FEED).flush();
	            writer.append("--" + boundary + "--").append(LINE_FEED);
	            writer.close();
	            BufferedReader br = null;
	            int responseCode = con.getResponseCode();
	            if(responseCode==200) { // 정상 호출
	                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
	            } else {  // 오류 발생
	                System.out.println("error!!!!!!! responseCode= " + responseCode);
	                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
	            }
	            String inputLine;
	            if(br != null) {
	                StringBuffer response = new StringBuffer();
	                while ((inputLine = br.readLine()) != null) {
	                    response.append(inputLine);
	                }
	                br.close();
	                System.out.println(response.toString());
	            } else {
	                System.out.println("error !!!");
	            }
	        } catch (Exception e) {
	            System.out.println(e);
	        }
	    }
}

포즈인식 API

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class Pose_Estimation {
	   public static void main(String[] args) {

	        StringBuffer reqStr = new StringBuffer();
	        String clientId = "*****";//애플리케이션 클라이언트 아이디값";
		     String clientSecret = "****";//애플리케이션 클라이언트 시크릿값";

		     try {
		            String paramName = "image"; // 파라미터명은 image로 지정
		            String imgFile = "22.jpg";
		            File uploadFile = new File(imgFile);
		            String apiURL = "https://naveropenapi.apigw.ntruss.com/vision-pose/v1/estimate"; // 사람 인식
		            URL url = new URL(apiURL);
		            HttpURLConnection con = (HttpURLConnection)url.openConnection();
		            con.setUseCaches(false);
		            con.setDoOutput(true);
		            con.setDoInput(true);
		            // multipart request
		            String boundary = "---" + System.currentTimeMillis() + "---";
		            con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
		            con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
		            con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
		            OutputStream outputStream = con.getOutputStream();
		            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true);
		            String LINE_FEED = "\r\n";
		            // file 추가
		            String fileName = uploadFile.getName();
		            writer.append("--" + boundary).append(LINE_FEED);
		            writer.append("Content-Disposition: form-data; name=\"" + paramName + "\"; filename=\"" + fileName + "\"").append(LINE_FEED);
		            writer.append("Content-Type: "  + URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED);
		            writer.append(LINE_FEED);
		            writer.flush();
		            FileInputStream inputStream = new FileInputStream(uploadFile);
		            byte[] buffer = new byte[4096];
		            int bytesRead = -1;
		            while ((bytesRead = inputStream.read(buffer)) != -1) {
		                outputStream.write(buffer, 0, bytesRead);
		            }
		            outputStream.flush();
		            inputStream.close();
		            writer.append(LINE_FEED).flush();
		            writer.append("--" + boundary + "--").append(LINE_FEED);
		            writer.close();
		            BufferedReader br = null;
		            int responseCode = con.getResponseCode();
		            if(responseCode==200) { // 정상 호출
		                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
		            } else {  // 오류 발생
		                System.out.println("error!!!!!!! responseCode= " + responseCode);
		                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
		            }
		            String inputLine;
		            if(br != null) {
		                StringBuffer response = new StringBuffer();
		                while ((inputLine = br.readLine()) != null) {
		                    response.append(inputLine);
		                }
		                br.close();
		                System.out.println(response.toString());
		            } else {
		                System.out.println("error !!!");
		            }
		        } catch (Exception e) {
		            System.out.println(e);
		        }
		    }
}

이미지 크기가 300KB 가 초가 되면 안된다. 이거때매 한참 해맸네;

반응형

댓글