Spring Rest Template 를 활용한 GCM 커넥터 샘플 코드
코드 포인트
1. Interface부를 따로 분리하지 않음.
2. RestTemplate 를 활용
3. GCM 전송
@Component
@Scope("singleton")
public class GcmConnector {
private Logger logger = LoggerFactory.getLogger(getClass());
@Value("${google.gcm.url}")
private String googleGcmUrl;
@Value("${google.gcm.authToken}")
private String googleGcmAuthToken;
public boolean sendMessage(String registrationId, String message) throws Exception {
StringBuffer postDataBuilder = new StringBuffer();
postDataBuilder.append("registration_id=" + registrationId); // 등록ID
postDataBuilder.append("&collapse_key=1");
postDataBuilder.append("&delay_while_idle=1");
try {
postDataBuilder.append("&data.msg=" + URLEncoder.encode(message, "UTF-8")); //msg
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(googleGcmUrl);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add(org.apache.http.HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8");
httpHeaders.add(org.apache.http.HttpHeaders.CONTENT_LENGTH, String.valueOf(postDataBuilder.length()));
httpHeaders.add(org.apache.http.HttpHeaders.AUTHORIZATION, "key=" + googleGcmAuthToken);
HttpEntity<String> httpEntity = new HttpEntity<String>(postDataBuilder.toString(), httpHeaders);
new RestTemplate().exchange(uriComponentsBuilder.build().toUri(), HttpMethod.POST, httpEntity, String.class);
return true;
} catch (UnsupportedEncodingException e) {
logger.error("GcmPushConnectorImpl pushRestTemplate faild. cause : " + e.getMessage());
} catch (HttpClientErrorException e) {
logger.error("GcmPushConnectorImpl pushRestTemplate faild. cause : " + e.getMessage());
}
}
}
'java' 카테고리의 다른 글
abstract 와 interface 차이 (0) | 2014.03.26 |
---|---|
객체를 인자로 보내서 값을 설정하는것 (0) | 2014.03.18 |
jaxb sample code (0) | 2014.03.17 |
GCM MismatchSenderId (0) | 2014.03.12 |
xmpp sasl authentication digest-md5 failed not-authorized (0) | 2014.03.04 |