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같은 

이상한 값만 넘어오는군요 

서버의 문제인지 모르겠습니다. 


혹 알고 계시면 답변 감사합니다.