我在谷歌,cocos2d-x wiki,討論論壇和這裏的stackoverflow上搜索了這個,但沒有得到任何答案。在Cocos2d-x中如何urlencode和解碼來自webservice的數據
我有一個web服務,它以urlencoded形式給出json字符串。如何解碼在cocos2d-x中,然後將其轉換爲JSON並使用它?
我是cocos2d-x的新手。任何幫助將是令人滿意的。
我在谷歌,cocos2d-x wiki,討論論壇和這裏的stackoverflow上搜索了這個,但沒有得到任何答案。在Cocos2d-x中如何urlencode和解碼來自webservice的數據
我有一個web服務,它以urlencoded形式給出json字符串。如何解碼在cocos2d-x中,然後將其轉換爲JSON並使用它?
我是cocos2d-x的新手。任何幫助將是令人滿意的。
你可以使用cJSON解析器,它很好用,易於使用。 http://sourceforge.net/projects/cjson/
感謝Pratikxman ..它是否具有URL編碼和解碼功能。另外,有沒有使用這個例子。 – Gunjan
這取決於解碼格式。這裏是base64解碼。 讓我知道你是否需要編碼。 要將解碼字符串解析爲Json,請使用rapidjson。它已經在cocos2dx
//解碼
static inline bool is_base64(unsigned char c) {
return (isalnum(c) || (c == '+') || (c == '/'));
}
string Util::base64_decode(string const& encoded_string) {
static const std::string base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"/";
int in_len = encoded_string.size();
int i = 0;
int j = 0;
int in_ = 0;
unsigned char char_array_4[4], char_array_3[3];
std::string ret;
while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
char_array_4[i++] = encoded_string[in_]; in_++;
if (i ==4) {
for (i = 0; i <4; i++)
char_array_4[i] = base64_chars.find(char_array_4[i]);
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
for (i = 0; (i < 3); i++)
ret += char_array_3[i];
i = 0;
}
}
if (i) {
for (j = i; j <4; j++)
char_array_4[j] = 0;
for (j = 0; j <4; j++)
char_array_4[j] = base64_chars.find(char_array_4[j]);
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
for (j = 0; (j < i - 1); j++) ret += char_array_3[j];
}
return ret;
}
我得到了答案。有一個圖書館捲曲。您可以使用。 http://curl.haxx.se/libcurl/c/curl_easy_escape.html – Gunjan