GCM을 구현하려 합니다.
PHP로 하기에는 SSL이 막혀있습니다.
먼저 C로 구현하기 위해서 다음과 같은 코드를 적용 해 보았습니다.
`
#include "ForsHeader.h"
#define BUFF_SIZE 1024
#define HEADER_DEBUG 1
static const char * GCM_URL = "https://android.gogoleapis.com/gcm/send";
static const char * HEADERS[] = {
"Content-Type:application/json"
,"Authorization:key=AIzaSyDKrqI5b7-2uIB2nwEFP3uCbsXiAZPNIMY"
};
static const char * TIME_TO_LIVE = "\"time_to_live\" : 108";
static const char * COLLAPSE_KEY = "\"collapse_key\" : \"Push_msg\"";
static const char * DELAY_WHILE_IDLE = "\"delay_while_idle\" : true";
static const char * DATA = "\"data\" : {\n\"MSG\" : \"Hi\"\n}\n";
static const char * REGI_IDS = "\"registration_ids\": [ \"APA91bGXOjtlJIVxglGuNXDJU1l7YSOtiM_BxK0pjSmDVU2-hBBmXwzCyX4dop1ns8fDtQb_vDs91nTRiwFG1B9JTaROaiZqqYCLVunbGNc33lSTCsNxG-7k-arXo33bG2r_MLsh3i30AhFms3nC4 9sQX5OvouSVtQ\" ]";
int main(int argc, char* argv[])
{
int client_socket;
char buf[BUFF_SIZE+5], buffer[BUFF_SIZE];
char *key, *value, *post=NULL;
char ** post_data_;
CURL * curl_handle;
FILE * fp;
MEMORY_STRUCT_S st_body;
struct curl_slist *headers = NULL;
curl_slist_append ( headers, "Content-Type: application/json" );
curl_slist_append ( headers, "Accept: application/json" );
curl_slist_append ( headers, "charsets: utf-8" );
curl_slist_append ( headers, "Authroization:key=AIzaSyDKrqI5b7-2uIB2nwEFP3uCbsXiAZPNIMY" );
st_body.done_size = 0;
st_body.max_size = 1024;
st_body.ptr = buffer;
curl_global_init ( CURL_GLOBAL_ALL );
curl_handle = curl_easy_init ();
curl_easy_setopt ( curl_handle, CURLOPT_NOPROGRESS, 0 );
curl_easy_setopt ( curl_handle, CURLOPT_HTTPHEADER, headers );
curl_easy_setopt ( curl_handle, CURLOPT_WRITEFUNCTION, write_data );
curl_easy_setopt ( curl_handle, CURLOPT_URL, GCM_URL );
curl_easy_setopt ( curl_handle, CURLOPT_WRITEDATA, &st_body );
sprintf ( buf, "{ \n%s,\n %s,\n %s,\n %s,\n %s\n }"
, TIME_TO_LIVE
, COLLAPSE_KEY
, DELAY_WHILE_IDLE
, DATA
, REGI_IDS );
if ( HEADER_DEBUG ) printf ( " buf :: \n%s\n", buf );
curl_easy_setopt ( curl_handle, CURLOPT_POSTFIELDS, buf );
curl_easy_setopt ( curl_handle, CURLOPT_POST, OPTION_TRUE );
if ( HEADER_DEBUG ) printf ( " Get it !\n" );
curl_easy_perform ( curl_handle );
if ( HEADER_DEBUG ) printf ( " cleanup curl stuff\n" );
curl_easy_cleanup ( curl_handle );
printf ( "%s\n", buffer);
fp = fopen ( "GCM_log", "w+" );
fputs ( buffer, fp );
if ( fp ) fclose ( fp );
return 0;
}
결과값으로 X!@$X같은
이상한 값만 넘어오는군요
서버의 문제인지 모르겠습니다.
혹 알고 계시면 답변 감사합니다.