티스토리 뷰
반응형
안녕하십니까
Java 개발을 하면서 내가 만든 API가 아닌 외부 api를 사용할 때가 가끔씩 있지 않습니까???
그리고 그 외부 api를 serivce단에서 구현하기 위해서 여러가지 방법이 있는데 오늘은 그것에 대해 작성해 봤습니다.
일단 제가 알아본 방법으로는 3가지가 있습니다.
1. Java.net 이용하기
2. org.springbootframework.http 이용하기
3. Apache.httpClient 이용하기
그럼 코드를 한 번 보겠습니다.
1. Java.net ( GET )
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
public class ReCaptchaUtil {
public static boolean reCaptcha_Validate_Check(String token) throws IOException, JSONException {
InetAddress local = InetAddress.getLocalHost();
String ip = local.getHostAddress();
String secretKey = "google secret key"
String url = "https://www.google.com/recaptcha/api/siteverify?"
+ "secret=" + secretKey
+ "&response=" + token
+ "&remoteip=" + ip;
logger.info("reCaptcha token : " + token);
logger.info("reCaptcha remoteip : " + ip);
InputStream res = new URL(url).openStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(res, Charset.forName("UTF-8")));
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
String jsonText = sb.toString();
res.close();
JSONObject json = new JSONObject(jsonText);
return json.getBoolean("success");
}
}
Java.net을 이용해서 http 통신을 하는 방법 입니다.
Stream을 받은 후에 Reader로 읽어 오는 것이죠
2 org.springframework.http
이 방법은 순수 java가 아닌 spring을 이용해서 구현할 때 유용한 방법 입니다.
이 예제는 제가 페이스북 로그인을 구현할 때 사용했던 방법입니다.
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class SocialAuthenticationService {
private String getLongTermFacebookToken(String facebookToken) throws ParseException {
String url = "https://graph.facebook.com/oauth/access_token?"
+ "grant_type=fb_exchange_token"
+ "&client_id=" + env.getProperty("facebook.client.id")
+ "&client_secret=" + env.getProperty("facebook.client.secret")
+ "&fb_exchange_token=" + facebookToken;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
HttpEntity<?> httpEntity = new HttpEntity<String>(headers);
RestTemplate restTemplate = new RestTemplate(requestFactory);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
String token = response.getBody();
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(token);
return jsonObject.get("access_token").toString();
}
}
그리고 마지막으로 Apache 라이브러리를 이용해서 구현하는 방법인데, 제가 구현하기 보다는 밑의 링크를 타고 한 번 확인해보세요!
1. java.net 이용과 3. Apache 라이브러리에 대해 좀 더 자세히 알고 싶으신 분은 여기 한번 들어가 보세요.
참고
https://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/
반응형
'BackEnd > Java' 카테고리의 다른 글
Log4j2 날짜별 폴더 생성 & Level별 로그 생성 (2) | 2019.09.04 |
---|---|
Spring boot AWS S3를 이용한 File Upload/Download (1) | 2019.08.26 |
Spring boot + Mybatis 연결하기 (0) | 2019.03.26 |
Spring boot Redis 사용하기 (3) | 2019.03.12 |
Spring boot jwt token 사용하기 (5) | 2019.03.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Angular
- data component
- mobx
- Router
- 파이썬
- data table component
- react
- Spring Boot
- JPA
- facebook login
- localStorage
- 파이썬3
- data grid component
- data gird component
- jQuery
- angular router
- 페이스북 로그인
- Java
- Redux
- data component module
- CSS
- JavaScript
- JSON
- python3
- React-router
- https://www.tistory.com/auth/logout/
- Spring
- MySQL
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함