2015-10-19 50 views
0

我在谷歌,cocos2d-x wiki,討論論壇和這裏的stackoverflow上搜索了這個,但沒有得到任何答案。在Cocos2d-x中如何urlencode和解碼來自webservice的數據

我有一個web服務,它以urlencoded形式給出json字符串。如何解碼在cocos2d-x中,然後將其轉換爲JSON並使用它?

我是cocos2d-x的新手。任何幫助將是令人滿意的。

+0

我得到了答案。有一個圖書館捲曲。您可以使用。 http://curl.haxx.se/libcurl/c/curl_easy_escape.html – Gunjan

回答

0

這取決於解碼格式。這裏是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; 
    } 
+0

這個工作是否會像javascript中的escape或unescape一樣。我正在使用c#中的UrlEncode方法從webservice接收數據。 – Gunjan

+0

如果C#正在執行base64編碼,那麼它將工作。 – Zahi

相關問題