블로그는 나의 힘!
[ Programing ]/C++2021. 10. 25. 16:48

Rest Body


#include "경로/jsoncpp-src-0.5.0/include/json/json.h"
//#pragma comment (lib, "경로/json_Name.lib")

char szLocale[] = "KOREA\0";

char pPID[] = "ASDF1234\0";
char pMessage[] = "Message Test 3\0";
char pTitle[] = "Message Test 3\0";

//!< 대입.
Json::Value jsonPayloads;   //!< 배열 생성.
jsonPayloads["locale"] = szLocale;
jsonPayloads["alert"] = "%s";
jsonPayloads["title"] = "%s";

Json::Value jsonDataMessage;
jsonDataMessage["defaultLocale"] = szLocale;   //!< 변수 대입
jsonDataMessage["fcmPayloads"].append( jsonPayloads );   //!< 배열 추가.
jsonDataMessage["apnsPayloads"].append( jsonPayloads );
jsonDataMessage["targets"].append( pPID );
string jsonStrA = jsonDataMessage.toStyledString();

//////////////////////////////////////////// Multi -> Unicode START //
//!< 변환에 필요한 버퍼 크기를 알아낸다. nConvCharCount는 변환 후 문자 개수(NULL 포함)
long nConvCharCount = MultiByteToWideChar( CP_ACP
     , 0
     , jsonStrA.c_str()
     , -1        //!< pszAnsiStr는 NULL로끝나는 문자열
     , NULL   //!< Query Length
     , 0 );      //!< Query Length
if (nConvCharCount <= 0)
     return false;

//!< 변환에 필요한 버퍼 준비
//wchar_t wbuf[] = new wchar_t[nConvCharCount];
wchar_t pwBuf[1028] = { 0, };

//!< 실재 변환
long nRet = MultiByteToWideChar( CP_ACP
     , 0
     , jsonStrA.c_str()
     , -1
     , pwBuf
     , nConvCharCount );
if (nRet != nConvCharCount)
     return false;
//////////////////////////////////////////// Multi -> Unicode END //

//!< 아웃 변수에 할당
wstring jsonStrW;
jsonStrW.assign( pwBuf );

wchar_t wszBody[1024]{ 0, };
wsprintf( wszBody, jsonStrW.c_str(), pMessage, pTitle, pMessage, pTitle );



//////////////////////////////////////////// Unicode -> Multi(UTF8) START //
//!< 변환에 필요한 버퍼 크기를 알아낸다. nConvCharCount는 변환 후 문자 개수(널포함)
nConvCharCount = WideCharToMultiByte( CP_UTF8
     , 0
     , wszBody
     , -1
     , NULL
     , 0
     , NULL
     , NULL );
if (nConvCharCount <= 0)
     return false;

//!< 버퍼 준비
//wchar_t buf[] = new wchar_t[nConvCharCount];
char pBuf[1024] = { 0, };

//!< 실재 변환
long nRet = WideCharToMultiByte( CP_UTF8
     , 0
     , wszBody
     , -1
     , pBuf
     , nConvCharCount
     , NULL
     , NULL );   //!< UTF8 변환은 이거 사용시 ERROR
if (nRet <= 0)
     return false;
//////////////////////////////////////////// Unicode -> Multi(UTF8) END //

//!< 아웃 변수에 할당
httpBody.assign( pBuf );

 


 

'[ Programing ] > C++' 카테고리의 다른 글

MySQL C++ API / ODBC  (0) 2021.11.09
모두의 코드  (0) 2021.10.28
스레드 관련 정리.  (0) 2021.09.28
C++ JSON 파싱  (0) 2021.09.17
C++ Json Param ParsingBind  (0) 2021.02.03
Posted by Mister_Q