티스토리 뷰

BackEnd/Java

Java send HTTP request

철철22 2019. 4. 2. 16:40
반응형

안녕하십니까

 

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/

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함