반응형
package com.mulcam.clova.controller;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class Clova_CAPTCHA {
String clientId = "*********";// 애플리케이션 클라이언트 아이디값";
String clientSecret = "************";// 애플리케이션 클라이언트 시크릿값";
@GetMapping("/captchaform")
public String captcharForm() {
return "captcha_img";
}
String key;
@GetMapping("/captcha")
public void reqCaptcha(HttpServletResponse res) {
try {
key = getCode(); // https://naveropenapi.apigw.ntruss.com/captcha/v1/nkey 호출로 받은 키값
String apiURL = "https://naveropenapi.apigw.ntruss.com/captcha-bin/v1/ncaptcha?key=" + key
+ "&X-NCP-APIGW-API-KEY-ID" + clientId;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader br;
if (responseCode == 200) { // 정상 호출
InputStream is = con.getInputStream();
int read = 0;
byte[] bytes = new byte[1024];
OutputStream outputStream = res.getOutputStream();
while ((read = is.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
is.close();
} 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);
}
}
@PostMapping("/captchacheck")
public String catpchaCheck(@RequestParam("userin") String userin, Model model) {
boolean result=false;
String view = "";
try {
String code = "1"; // 키 발급시 0, 캡차 이미지 비교시 1로 세팅
String value = userin; // 사용자가 입력한 캡차 이미지 글자값
String apiURL = "https://naveropenapi.apigw.ntruss.com/captcha/v1/nkey?code=" + code + "&key=" + key
+ "&value=" + value;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
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());
result = (Boolean) jsonobj.get("result");
if(result) {
model.addAttribute("result", "success");
view = "captcha_check";
} else {
view = "redirect:/captchaform";
}
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
return view;
}
private String getCode() {
String key = "";
try {
String code = "0"; // 키 발급시 0, 캡차 이미지 비교시 1로 세팅
String apiURL = "https://naveropenapi.apigw.ntruss.com/captcha/v1/nkey?code=" + code;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
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());
key = (String) jsonobj.get("key");
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
return key;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<img src="/captcha"><br>
<form action="/captchacheck" method="post">
<input type="text" name="userin">
<input type="submit" name="전송">
</form>
</body>
</html>
위에는 이미지-----------------------------------아래는 음성-------------------
package com.mulcam.clova.controller;
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 javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class Clova_CAPTCHA_Audio {
String clientId = "**********";// 애플리케이션 클라이언트 아이디값";
String clientSecret = "**************";// 애플리케이션 클라이언트 시크릿값";
String key;
@GetMapping("/captchaaudioform")
public String captcharForm() {
return "captcha_audio";
}
@GetMapping("/captchaaudio")
public void reqCaptchaAudio(HttpServletResponse res) {
try {
getCode(); // https://naveropenapi.apigw.ntruss.com/captcha/v1/nkey 호출로 받은 키값
System.out.println(key);
String apiURL = "https://naveropenapi.apigw.ntruss.com/scaptcha-bin/v1/scaptcha?key=" + key
+ "&X-NCP-APIGW-API-KEY-ID=" + clientId;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader br;
if (responseCode == 200) { // 정상 호출
InputStream is = con.getInputStream();
int read = 0;
byte[] bytes = new byte[1024];
// 랜덤한 이름으로 파일 생성
OutputStream outputStream = res.getOutputStream();
while ((read = is.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
is.close();
} 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);
}
}
@PostMapping("/captchaaudiocheck")
public String capcharAudioCheck(@RequestParam("userin") String userin, Model model) {
boolean result=false;
String view = "";
System.out.println(key);
try {
String code = "1"; // 키 발급시 0, 캡차 음성 비교시 1로 세팅
String value = userin; // 사용자가 입력한 캡차 값
String apiURL = "https://naveropenapi.apigw.ntruss.com/scaptcha/v1/skey?code=" + code + "&key=" + key
+ "&value=" + value;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
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());
result = (Boolean) jsonobj.get("result");
if(result) {
model.addAttribute("result", "success");
view = "captcha_check";
} else {
view = "redirect:/captchaaudioform";
}
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
return view;
}
private void getCode() {
try {
String code = "0"; // 키 발급시 0, 캡차 음성 비교시 1로 세팅
String apiURL = "https://naveropenapi.apigw.ntruss.com/scaptcha/v1/skey?code=" + code;
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
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());
key = (String) jsonobj.get("key");
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<audio controls>
<source src="/captchaaudio" type="audio/wav">
</audio><br>
<form action="/captchaaudiocheck" method="post">
<input type="text" name="userin">
<input type="submit" value="전송">
</form>
</body>
</html>
----------------아래부터 감정분석
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.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class Clova_Sentiment {
@GetMapping("/sentiment")
public String sentiment() {
String clientId = "********";// 애플리케이션 클라이언트 아이디값";
String clientSecret = "************";// 애플리케이션 클라이언트 시크릿값";
StringBuffer response = new StringBuffer();
try {
String content = "{\"content\":\"싸늘하다. 가슴에 비수가 날아와 꽂힌다.\"}";
String apiURL = "https://naveropenapi.apigw.ntruss.com/sentiment-analysis/v1/analyze";
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);
con.setRequestProperty("Content-Type", "application/json");
// post request
String postParams = "content=" + content;
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(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;
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
}
br.close();
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
return response.toString();
}
}
반응형
'개발자 관련 공부 > 멀티캠퍼스' 카테고리의 다른 글
[Javascript] 우클릭방지, 개발자도구(F12)방지 (0) | 2022.02.28 |
---|---|
[세미프로젝트중] 이미지 대체 사용팁. placehold.co (0) | 2022.02.28 |
[API]연습 (0) | 2022.02.18 |
[HTTPS] http? http? 가 뭐길래... (0) | 2022.02.18 |
[문제 DB 가져오기] 해결! (0) | 2022.02.16 |
댓글