libcurl Lesson x-www-form-urlencoded use

Scenario
    when HTTP interaction, specified on the server application / x-www-form- urlencoded Content-Type of the type required for Body entity url encoded packets. libcurl provides curl_easy_escape

例子
 static void TestPostOfRestfulInterfaceByUrlEncode()
 {
  CURL *pCurlHandle = curl_easy_init();
  curl_easy_setopt(pCurlHandle, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(pCurlHandle, CURLOPT_URL, "http://192.168.10.163:80/cs/restfull/excuteSqlByCode");
  struct curl_slist *pCurlList = NULL;
  pCurlList = curl_slist_append(pCurlList, "Content-Type: application/x-www-form-urlencoded");//指定文本url编码
  curl_easy_setopt(pCurlHandle, CURLOPT_HTTPHEADER, pCurlList);
  Json::Value jsonAuthen;
  jsonAuthen["loginAccount"] = "root";
  std::string strAuth = jsonAuthen.toStyledString();
//对参数authorJson的内容:{ "loginAccount" : "root"}  ,进行url编码
char* pszEncodeAuth = curl_easy_escape(pCurlHandle, strAuth.c_str(), strAuth.length());
  std::string strEncodeAuth = pszEncodeAuth;
//释放申请的内存
  curl_free(pszEncodeAuth);
  Json::Value jsonContent;
  jsonContent["operatorname"] = "PostName";
  Json::Value jsonParams;
  jsonParams["name"] = "fengyuzaitu";
  jsonContent["params"] = jsonParams;
  std::string strParams = jsonContent.toStyledString();
  char* pszParams = curl_easy_escape(pCurlHandle, strParams.c_str(), strParams.length());
  std::string strEncodeParams = pszParams;
  curl_free(pszParams);
  std::string strPostData = "authorJson=" + strAuth + "&parmJson=" + strParams;
  curl_easy_setopt(pCurlHandle, CURLOPT_POSTFIELDS, strPostUrlEncodeData.c_str());
  CURLcode nRet = curl_easy_perform(pCurlHandle);
  if (0 == nRet)
  {
   std::cout << "Post message successfully" << std::endl;
  }
  curl_slist_free_all(pCurlList);
  curl_easy_cleanup(pCurlHandle);
 }

Content Analysis:
/ *
original data without url encoded as follows:
authorJson = {
   "loginAccount": "the root"
}
& parmJson = {
   "OperatorName": "postname",
   "the params": {
      "name": "fengyuzaitu"
   }
}
* /
  STD :: String strPostUrlEncodeData = "authorJson =" + strEncodeAuth + "& parmJson =" + strEncodeParams;
/ *
through url-encoded data as follows: authorJson =% 7B% 0A% 20% 20% 20% 22loginAccount% 22% 20% 3A% 20% 22root% 22% 0A% 7D% 0A & parmJson =% 7B% 0A% 20% 20% 20% 22operatorname% 22% 20% 3A% 20% 22PostName% 22% 2C% 0A% 20% 20% 20% 22params % 22% 20% 3A% 20 % 7B% 0A% 20% 20% 20% 20% 20% 20% 22name% 22% 20% 3A% 20% 22fengyuzaitu% 22% 0A% 20% 20% 20% 7D% 0A 7D% 0A%
* /


Guess you like

Origin blog.51cto.com/fengyuzaitu/2434642