apiclient.cpp
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:67k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////////
  2. //
  3. //  Copyright (c) 1988-2009,  Huawei Software company  All Right Reserved.
  4. //
  5. //   Huawei Software Internet Service Developtment Division
  6. //
  7. //   Project : AppMarket WebService Client API 
  8. //  
  9. //  History :
  10. //
  11. //   Author :liuli 35397 <marker dot liu at gmail dot com>
  12. //
  13. //   Date   :2009-0-22
  14. //   
  15. // 
  16. //////////////////////////////////////////////////////////////////////////
  17. #include "StdAfx.h"
  18. #pragma warning(disable: 4786)
  19. #include <string>
  20. #include <sstream>
  21. #include <list>
  22. #include "libcurl/include/curl/curl.h"
  23. #include "md5.h"
  24. #include "apiclient.h"
  25. #include "winjson/json.h"
  26. CApiClient::CApiClient()
  27. :m_pcurl(NULL),
  28. call_id(0)
  29. {
  30. m_szAppKey[0] ='';
  31. m_szAppSecretKey[0] ='';
  32. m_szUserName[0] ='';
  33. m_szCookie[0] ='';
  34. m_szWebServiceURL[0]='';
  35. m_ulUID = 0;
  36. m_bLoginState = SESSION_STATE_UNLOGIN;
  37. m_pcurl = curl_easy_init();
  38. }
  39. // 拷贝构造函数;
  40. CApiClient::CApiClient(const CApiClient & rhs)
  41. :m_pcurl(NULL),
  42. call_id(0)
  43. {
  44. strncpy(m_szAppKey,rhs.m_szAppKey,sizeof(m_szAppKey)-1);
  45. strncpy(m_szAppSecretKey,rhs.m_szAppSecretKey,sizeof(m_szAppSecretKey)-1);
  46. strncpy(m_szUserName,rhs.m_szUserName,sizeof(m_szUserName)-1);
  47. m_szCookie[0]='';
  48. m_szWebServiceURL[0]='';
  49. m_ulUID = rhs.m_ulUID;
  50. m_bLoginState = rhs.m_bLoginState;
  51. if (NULL == m_pcurl)
  52. {
  53. m_pcurl = curl_easy_init();
  54. }
  55. }
  56. // 带参数构造函数
  57. CApiClient::CApiClient(char * pszAPIKEY,char * pszAPISKEY,char * pszServerURL)
  58. :m_pcurl(NULL),
  59. call_id(0),
  60. m_errCode(0)
  61. {
  62. memcpy (m_szSessionKey,"asdf",5);
  63. memcpy (m_szFormat,"json",5);
  64. if (NULL != pszAPIKEY)
  65. {
  66. strncpy(m_szAppKey,&(*pszAPIKEY),sizeof(m_szAppKey)-1);
  67. }
  68. if (NULL !=pszAPISKEY)
  69. {
  70. strncpy(m_szAppSecretKey,&(*pszAPISKEY),sizeof(m_szAppSecretKey)-1);
  71. }
  72. if (NULL != pszServerURL)
  73. {
  74. m_szWebServiceURL[0]='';
  75. strncpy(m_szWebServiceURL,&(*pszServerURL),sizeof(m_szWebServiceURL)-1);
  76. }
  77. if (NULL == m_pcurl)
  78. {
  79. m_pcurl = curl_easy_init();
  80. }
  81. }
  82. // 析构函数
  83. CApiClient::~CApiClient()
  84. {
  85. // ToDo : do something for game over ....?
  86. if (m_pcurl)
  87. {
  88. // void curl_easy_cleanup(CURL * handle );
  89. curl_easy_cleanup(m_pcurl);
  90. m_pcurl = NULL;
  91. }
  92. }
  93. //发送数据包,并接受返回包
  94. string CApiClient::SendAndRecvPackage(list<string> myParams)
  95. {
  96. string result = "";
  97. curl_easy_reset( this->m_pcurl );
  98. #ifdef fb_debug
  99. curl_easy_setopt( m_pcurl, CURLOPT_VERBOSE, true );
  100. #endif
  101. curl_easy_setopt( m_pcurl, CURLOPT_URL, this->m_szWebServiceURL);
  102. //////////////////////////////////////////////////////////////////////////
  103. string query = CApiClient::get_param_string( myParams, true );
  104. printf("%snt",query.c_str());
  105. myParams.clear();
  106. //////////////////////////////////////////////////////////////////////////
  107. //转换为UFT_8
  108. int nRelengh = 0;
  109. nRelengh = GBKToUTF8((unsigned char *)query.c_str(),NULL,NULL);
  110. char *lpUTF8Str = new char[nRelengh + 1];
  111. GBKToUTF8((unsigned char *)query.c_str(),(unsigned char *)lpUTF8Str,nRelengh);
  112. string strUtf8(lpUTF8Str);
  113. delete[] lpUTF8Str;
  114. curl_easy_setopt( m_pcurl, CURLOPT_POST, true );
  115. curl_easy_setopt( m_pcurl, CURLOPT_POSTFIELDS, strUtf8.c_str( ) );
  116. curl_easy_setopt( m_pcurl, CURLOPT_WRITEFUNCTION, CApiClient::write_callback );
  117.     curl_easy_setopt( m_pcurl, CURLOPT_WRITEDATA, &result );
  118.     
  119.     this->res = curl_easy_perform(m_pcurl);
  120.     call_id++;
  121. //////////////////////////////////////////////////////////////////////////
  122. // 判断返回数据结果
  123. if ( (0 != this->res) || (result.empty()))
  124. {
  125. return "";
  126. }
  127. //将返回结果转换为GBK
  128. result     = UTF8ToGBK((char*)result.c_str());
  129. return result;
  130. }
  131. //分析解析 JSON 数据
  132. int  CApiClient::AnalyzeRespMsg(string&  result, const char* strKeyName, list<string>& lstStrValue)
  133. {
  134. if (result.empty())
  135. {
  136. return -1;
  137. }
  138. lstStrValue.clear();
  139. string strValue = "Test";
  140. struct json_object *jobj = NULL;
  141. JBOOLEAN jRetVal = FALSE;
  142. char* ptest= (char*)(result.c_str());
  143. //////////////////////////////////////////////////////////////////////////
  144. //  SKIP ::  This UTF-8 Bigendian Of Marker .....
  145. //  0xEF BB BF
  146. //  
  147. if (  ((unsigned char)0xEF == (unsigned char)ptest[0])
  148. &&((unsigned char)0xBB == (unsigned char)ptest[1])
  149. &&((unsigned char)0xBF == (unsigned char)ptest[2]))
  150. {
  151. ptest = ptest +3;
  152. }
  153. try
  154. {
  155. //////////////////////////////////////////////////////////////////////////
  156. //  将结果赋值给JSON结构,对返回结果进行JSON解析
  157. //  
  158. jobj = json_tokener_parse(ptest);
  159. struct json_object * results_jsonobj =NULL;
  160. struct json_object * item_jsonobj    =NULL;
  161. struct json_object * retVal_jsonobj  =NULL;
  162. struct json_object * code_jsonobj     =NULL;
  163. //////////////////////////////////////////////////////////////////////////
  164. //获取 result 关键字
  165. if (NULL != jobj)
  166. {
  167. //20090728 改成数组格式
  168. if(ptest[0] == '[')
  169. {
  170. jobj = json_object_array_get_idx(jobj, 0);
  171. }
  172. if (NULL != jobj)
  173. {
  174. results_jsonobj = json_object_object_get(jobj,"results");
  175. }
  176. if (NULL != jobj)
  177. {
  178. code_jsonobj = json_object_object_get(jobj, "code");
  179. if (code_jsonobj)
  180. {
  181. MessageBox(NULL,json_object_to_json_string(jobj),"Err",0);
  182. m_errCode = json_object_get_int(code_jsonobj);
  183. }
  184. json_object_put(code_jsonobj);
  185. }
  186. //json_object_put(jobj);
  187. }
  188. //////////////////////////////////////////////////////////////////////////
  189. //获取 item 关键字
  190. if (NULL != results_jsonobj)
  191. {
  192. item_jsonobj = json_object_object_get(results_jsonobj,"item");
  193. if( NULL != item_jsonobj)
  194. {
  195. retVal_jsonobj = json_object_object_get(results_jsonobj,"itemCount");
  196. if (retVal_jsonobj)
  197. {
  198. m_itemCount = json_object_get_int(retVal_jsonobj);
  199. }
  200. json_object_put(retVal_jsonobj);
  201. retVal_jsonobj    = json_object_object_get(results_jsonobj,"startIndex");
  202. if (retVal_jsonobj)
  203. {
  204. m_startIndex = json_object_get_int(retVal_jsonobj);
  205. }
  206. json_object_put(retVal_jsonobj);
  207. retVal_jsonobj = json_object_object_get(results_jsonobj,"currentCount");
  208. if (retVal_jsonobj)
  209. {
  210. m_currentCount = json_object_get_int(retVal_jsonobj);
  211. }
  212. json_object_put(retVal_jsonobj);
  213. for(int i = 0; i < json_object_array_length(item_jsonobj); i++) 
  214. {
  215. struct json_object *obj = json_object_array_get_idx(item_jsonobj, i);
  216. if(NULL != obj)
  217. {
  218. retVal_jsonobj = json_object_object_get(obj, (char *)(LPCSTR)strKeyName);
  219. if (retVal_jsonobj)
  220. {
  221. string strReValue = json_object_to_json_string(retVal_jsonobj);
  222. if (strReValue.at(0) == '"' && strReValue.at(strReValue.size() - 1) == '"' && strReValue.size()>2)
  223. {
  224. string strSub = strReValue.substr(1,strReValue.size()-2);
  225. _sleep(13);
  226. lstStrValue.push_back(strSub);
  227. }
  228. else
  229. lstStrValue.push_back(strReValue);
  230. TRACE("rn");
  231. TRACE(strReValue.data());
  232. }
  233. json_object_put(retVal_jsonobj);
  234. }
  235. json_object_put(obj);
  236. }
  237. TRACE("rn----------------------Src------------------------------rn");
  238. list<string>::iterator lstIT;
  239. for ( lstIT = lstStrValue.begin(); lstIT != lstStrValue.end(); lstIT++)
  240. {
  241. string strTemp;
  242. strTemp = *lstIT;
  243. TRACE("rn");
  244. TRACE(strTemp.data());
  245. }
  246. TRACE("rn----------------------Class-------------------------rn");
  247. }
  248. else //获取 “各字段” 关键字
  249. {
  250. /*
  251. retVal_jsonobj = json_object_object_get(results_jsonobj,"retVal");
  252. if (retVal_jsonobj)
  253. {
  254. jRetVal = json_object_get_boolean(retVal_jsonobj);
  255. m_bLoginState = jRetVal;
  256. }
  257. json_object_put(retVal_jsonobj);
  258. retVal_jsonobj = json_object_object_get(results_jsonobj,"uid");
  259. if (retVal_jsonobj)
  260. {
  261. m_ulUID = json_object_get_int(retVal_jsonobj);
  262. }
  263. json_object_put(retVal_jsonobj);
  264. */
  265. retVal_jsonobj    = json_object_object_get(results_jsonobj,(char *)(LPCSTR)strKeyName);
  266. if (retVal_jsonobj)
  267. {
  268. strValue = json_object_to_json_string(retVal_jsonobj);
  269. if (strValue.at(0) == '"' && strValue.at(strValue.size() - 1) == '"'&& strValue.size()>2 )
  270. {
  271. strValue = strValue.substr(1,strValue.size()-2);
  272. }
  273. lstStrValue.push_back(strValue);
  274. }
  275. json_object_put(retVal_jsonobj);
  276. }
  277. }
  278. has_session = jRetVal;
  279. //////////////////////////////////////////////////////////////////////////
  280. /*//清理 JSON 数据  报错,不处理反而不出错,只是内存有泄露??????????????
  281. if (retVal_jsonobj)  
  282. json_object_put(retVal_jsonobj);
  283. if (item_jsonobj)
  284. json_object_put(item_jsonobj);
  285. if (results_jsonobj)
  286. json_object_put(results_jsonobj);
  287. if (jobj)
  288. json_object_put(jobj);*/
  289. }
  290. catch (...)
  291. {
  292. }
  293. list<string>::iterator lstIT;
  294. for ( lstIT = lstStrValue.begin(); lstIT != lstStrValue.end(); lstIT++)
  295. {
  296. string strTemp;
  297. strTemp = *lstIT;
  298. TRACE("rn");
  299. TRACE(strTemp.data());
  300. }
  301. TRACE("rn----------------------View-------------------------rn");
  302.     return ( (0 == (this->res)) && (TRUE == jRetVal));
  303. }
  304. //登陆
  305. string CApiClient::LoginUser(const char * pszUserName, const char * pszPassword, const char * pszSessionKey, const char * pszFormat)
  306. {
  307. //////////////////////////////////////////////////////////////////////////
  308. if (NULL == m_pcurl)
  309. {
  310. m_pcurl = curl_easy_init();
  311. }
  312. list<string> myParams;
  313. string strVar;
  314. string strResult = "";
  315. //////////////////////////////////////////////////////////////////////////
  316. // methodname 
  317. strVar =  string("method=") + string("account.login");
  318. myParams.push_back(strVar);
  319. //////////////////////////////////////////////////////////////////////////
  320. // User Name
  321. if (NULL != pszUserName)
  322. {
  323. strVar =  string("uName=") + string(pszUserName);
  324. myParams.push_back(strVar);
  325. }
  326. //////////////////////////////////////////////////////////////////////////
  327. // Password
  328. if (NULL != pszPassword)
  329. {
  330. strVar =  string("uPass=") + string(pszPassword);
  331. myParams.push_back(strVar);
  332. }
  333. //////////////////////////////////////////////////////////////////////////
  334. //构造其他参数
  335. StructureParams(myParams);
  336. //发送并接受数据
  337. strResult = SendAndRecvPackage(myParams);
  338. return strResult;
  339. }
  340. ///  获取推荐信息:用户ID,索引开始号,最多返回结果数,排序字段名,升降序或其他,推荐范围
  341. string CApiClient::GetRecomMsg(const char *strUserId, const char *strIndex, const char *strMaxNum, 
  342.  const char *strOrderByName, const char* strOrderDirec, const char *strArea)
  343. {
  344. if (NULL == m_pcurl)
  345. {
  346. m_pcurl = curl_easy_init();
  347. }
  348. list<string> myParams;
  349. string strVar;
  350. string strResult;
  351. //////////////////////////////////////////////////////////////////////////
  352. // methodname 
  353. strVar =  string("method=") + string("recom.get");
  354. myParams.push_back(strVar);
  355. //////////////////////////////////////////////////////////////////////////
  356. // User ID
  357. if (NULL != strUserId)
  358. {
  359. strVar =  string("uid=") + string(strUserId);
  360. myParams.push_back(strVar);
  361. }
  362. //////////////////////////////////////////////////////////////////////////
  363. // strArea
  364. if (NULL != strArea)
  365. {
  366. strVar =  string("area=") + string(strArea);
  367. myParams.push_back(strVar);
  368. }
  369. //////////////////////////////////////////////////////////////////////////
  370. // startIndex
  371. if (NULL != strIndex)
  372. {
  373. strVar =  string("startIndex=") + string(strIndex);
  374. myParams.push_back(strVar);
  375. }
  376. //////////////////////////////////////////////////////////////////////////
  377. // maxNum
  378. if (NULL != strMaxNum)
  379. {
  380. strVar =  string("maxNum=") + string(strMaxNum);
  381. myParams.push_back(strVar);
  382. }
  383. //////////////////////////////////////////////////////////////////////////
  384. //orderByName
  385. if (NULL != strOrderByName)
  386. {
  387. strVar =  string("orderByName=") + string(strOrderByName);
  388. myParams.push_back(strVar);
  389. }
  390. //////////////////////////////////////////////////////////////////////////
  391. //orderDirec 
  392. if (NULL != strOrderDirec)
  393. {
  394. strVar =  string("orderDirec=") + string(strOrderDirec);
  395. myParams.push_back(strVar);
  396. }
  397. //////////////////////////////////////////////////////////////////////////
  398. //构造其他参数
  399. StructureParams(myParams);
  400. //发送并接受数据
  401. strResult = SendAndRecvPackage(myParams);
  402. return strResult;
  403. }
  404. ///  猜你喜欢:用户ID,最多返回结果数
  405. string CApiClient::GuessYouLike(const char *strUserId,const char *strMaxNum)
  406. {
  407. if (NULL == m_pcurl)
  408. {
  409. m_pcurl = curl_easy_init();
  410. }
  411. list<string> myParams;
  412. string strVar;
  413. string strResult;
  414. //////////////////////////////////////////////////////////////////////////
  415. // methodname 
  416. strVar =  string("method=") + string("recom.getParser");
  417. myParams.push_back(strVar);
  418. //////////////////////////////////////////////////////////////////////////
  419. // User ID
  420. if (NULL != strUserId)
  421. {
  422. strVar =  string("uid=") + string(strUserId);
  423. myParams.push_back(strVar);
  424. }
  425. //////////////////////////////////////////////////////////////////////////
  426. // maxNum
  427. if (NULL != strMaxNum)
  428. {
  429. strVar =  string("maxNum=") + string(strMaxNum);
  430. myParams.push_back(strVar);
  431. }
  432. //////////////////////////////////////////////////////////////////////////
  433. //构造其他参数
  434. StructureParams(myParams);
  435. //发送并接受数据
  436. strResult = SendAndRecvPackage(myParams);
  437. return strResult;
  438. }
  439. ///  获取应用分类列表:用户ID,索引开始号,最多返回结果数
  440. string CApiClient::GetAppGroup(const char *strUserId, const char *strIndex, const char *strMaxNum)
  441. {
  442. if (NULL == m_pcurl)
  443. {
  444. m_pcurl = curl_easy_init();
  445. }
  446. list<string> myParams;
  447. string strVar;
  448. string strResult;
  449. //////////////////////////////////////////////////////////////////////////
  450. // methodname 
  451. strVar =  string("method=") + string("appgroup.get");
  452. myParams.push_back(strVar);
  453. //////////////////////////////////////////////////////////////////////////
  454. // User ID
  455. if (NULL != strUserId)
  456. {
  457. strVar =  string("uid=") + string(strUserId);
  458. myParams.push_back(strVar);
  459. }
  460. //////////////////////////////////////////////////////////////////////////
  461. // startIndex
  462. if (NULL != strIndex)
  463. {
  464. strVar =  string("startIndex=") + string(strIndex);
  465. myParams.push_back(strVar);
  466. }
  467. //////////////////////////////////////////////////////////////////////////
  468. // maxNum
  469. if (NULL != strMaxNum)
  470. {
  471. strVar =  string("maxNum=") + string(strMaxNum);
  472. myParams.push_back(strVar);
  473. }
  474. //////////////////////////////////////////////////////////////////////////
  475. //构造其他参数
  476. StructureParams(myParams);
  477. //发送并接受数据
  478. strResult = SendAndRecvPackage(myParams);
  479. return strResult;
  480. }
  481. ///  获取收藏应用:用户ID,索引开始号,最多返回结果数
  482. string CApiClient::GetCollectionUse(const char *strUserId, const char *strIndex, const char *strMaxNum)
  483. {
  484. if (NULL == m_pcurl)
  485. {
  486. m_pcurl = curl_easy_init();
  487. }
  488. list<string> myParams;
  489. string strVar;
  490. string strResult;
  491. //////////////////////////////////////////////////////////////////////////
  492. // methodname 
  493. strVar =  string("method=") + string("shop.getShopApp");
  494. myParams.push_back(strVar);
  495. //////////////////////////////////////////////////////////////////////////
  496. // User ID
  497. if (NULL != strUserId)
  498. {
  499. strVar =  string("uid=") + string(strUserId);
  500. myParams.push_back(strVar);
  501. }
  502. //////////////////////////////////////////////////////////////////////////
  503. // startIndex
  504. if (NULL != strIndex)
  505. {
  506. strVar =  string("startIndex=") + string(strIndex);
  507. myParams.push_back(strVar);
  508. }
  509. //////////////////////////////////////////////////////////////////////////
  510. // maxNum
  511. if (NULL != strMaxNum)
  512. {
  513. strVar =  string("maxNum=") + string(strMaxNum);
  514. myParams.push_back(strVar);
  515. }
  516. //////////////////////////////////////////////////////////////////////////
  517. //构造其他参数
  518. StructureParams(myParams);
  519. //发送并接受数据
  520. strResult = SendAndRecvPackage(myParams);
  521. return strResult;
  522. }
  523. ///  获取应用:用户ID,索引开始号,最多返回结果数,用户行为
  524. string CApiClient::GetMyApp(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strUserAction)
  525. {
  526. if (NULL == m_pcurl)
  527. {
  528. m_pcurl = curl_easy_init();
  529. }
  530. list<string> myParams;
  531. string strVar;
  532. string strResult;
  533. //////////////////////////////////////////////////////////////////////////
  534. // methodname 
  535. strVar =  string("method=") + string("myapp.get");
  536. myParams.push_back(strVar);
  537. //////////////////////////////////////////////////////////////////////////
  538. // User ID
  539. if (NULL != strUserId)
  540. {
  541. strVar =  string("uid=") + string(strUserId);
  542. myParams.push_back(strVar);
  543. }
  544. //////////////////////////////////////////////////////////////////////////
  545. // startIndex
  546. if (NULL != strIndex)
  547. {
  548. strVar =  string("startIndex=") + string(strIndex);
  549. myParams.push_back(strVar);
  550. }
  551. //////////////////////////////////////////////////////////////////////////
  552. // maxNum
  553. if (NULL != strMaxNum)
  554. {
  555. strVar =  string("maxNum=") + string(strMaxNum);
  556. myParams.push_back(strVar);
  557. }
  558. //////////////////////////////////////////////////////////////////////////
  559. // userAction
  560. if (NULL != strUserAction)
  561. {
  562. strVar =  string("userAction=") + string(strUserAction);
  563. myParams.push_back(strVar);
  564. }
  565. //////////////////////////////////////////////////////////////////////////
  566. //构造其他参数
  567. StructureParams(myParams);
  568. //发送并接受数据
  569. strResult = SendAndRecvPackage(myParams);
  570. return strResult;
  571. }
  572. ///  应用搜索:
  573. string CApiClient::UseSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
  574.    const char *strSortId, const char *strPriceSmall, const char *strPriceBig, const char *strBrandName,
  575.    const char *strModleName, const char *strOrderByName, const char *strOrderDirec)
  576. {
  577. string strValue;
  578. return strValue;
  579. }
  580. ///  店铺搜索:
  581. string CApiClient::StoreSearch(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strKeyword,
  582.  const char *strSortId, const char *strOrderByName, const char *strOrderDirec, const char *strShopRate)
  583. {
  584. string strValue;
  585. return strValue;
  586. }
  587. ///  增加应用或店铺收藏:
  588. string CApiClient::AddCollection(const char *strUserId, const char *strAppId,const char * strArea)
  589. {
  590. if (NULL == m_pcurl)
  591. {
  592. m_pcurl = curl_easy_init();
  593. }
  594. list<string> myParams;
  595. string strVar;
  596. string strResult;
  597. //////////////////////////////////////////////////////////////////////////
  598. // methodname 
  599. strVar =  string("method=") + string("collection.addCol");
  600. myParams.push_back(strVar);
  601. //////////////////////////////////////////////////////////////////////////
  602. // User ID
  603. if (NULL != strUserId)
  604. {
  605. strVar =  string("uid=") + string(strUserId);
  606. myParams.push_back(strVar);
  607. }
  608. //////////////////////////////////////////////////////////////////////////
  609. //Id
  610. if (NULL != strAppId)
  611. {
  612. strVar =  string("id=") + string(strAppId);
  613. myParams.push_back(strVar);
  614. }
  615. //////////////////////////////////////////////////////////////////////////
  616. // area
  617. if (NULL != strArea)
  618. {
  619. strVar =  string("area=") + string(strArea);
  620. myParams.push_back(strVar);
  621. }
  622. //////////////////////////////////////////////////////////////////////////
  623. //构造其他参数
  624. StructureParams(myParams);
  625. //发送并接受数据
  626. strResult = SendAndRecvPackage(myParams);
  627. return strResult;
  628. }
  629. ///  删除应用或店铺收藏:
  630. string CApiClient::DelCollection(const char *strUserId, const char *strAppId, const char * strArea)
  631. {
  632. if (NULL == m_pcurl)
  633. {
  634. m_pcurl = curl_easy_init();
  635. }
  636. list<string> myParams;
  637. string strVar;
  638. string strResult;
  639. //////////////////////////////////////////////////////////////////////////
  640. // methodname 
  641. strVar =  string("method=") + string("collection.delCol");
  642. myParams.push_back(strVar);
  643. //////////////////////////////////////////////////////////////////////////
  644. // User ID
  645. if (NULL != strUserId)
  646. {
  647. strVar =  string("uid=") + string(strUserId);
  648. myParams.push_back(strVar);
  649. }
  650. //////////////////////////////////////////////////////////////////////////
  651. // id
  652. if (NULL != strAppId)
  653. {
  654. strVar =  string("id=") + string(strAppId);
  655. myParams.push_back(strVar);
  656. }
  657. //////////////////////////////////////////////////////////////////////////
  658. // area
  659. if (NULL != strArea)
  660. {
  661. strVar =  string("area=") + string(strArea);
  662. myParams.push_back(strVar);
  663. }
  664. //////////////////////////////////////////////////////////////////////////
  665. //构造其他参数
  666. StructureParams(myParams);
  667. //发送并接受数据
  668. strResult = SendAndRecvPackage(myParams);
  669. return strResult;
  670. }
  671. ///  店铺列表:=>  收件箱信息列表:
  672. string CApiClient::CollectionList(const char *strUserId, const char *strIndex, const char *strMaxNum)
  673. {
  674. if (NULL == m_pcurl)
  675. {
  676. m_pcurl = curl_easy_init();
  677. }
  678. list<string> myParams;
  679. string strVar;
  680. string strResult;
  681. //////////////////////////////////////////////////////////////////////////
  682. // methodname 
  683. strVar =  string("method=") + string("within.getInbox");
  684. myParams.push_back(strVar);
  685. //////////////////////////////////////////////////////////////////////////
  686. // User ID
  687. if (NULL != strUserId)
  688. {
  689. strVar =  string("uid=") + string(strUserId);
  690. myParams.push_back(strVar);
  691. }
  692. //////////////////////////////////////////////////////////////////////////
  693. // startIndex
  694. if (NULL != strIndex)
  695. {
  696. strVar =  string("startIndex=") + string(strIndex);
  697. myParams.push_back(strVar);
  698. }
  699. //////////////////////////////////////////////////////////////////////////
  700. // maxNum
  701. if (NULL != strMaxNum)
  702. {
  703. strVar =  string("maxNum=") + string(strMaxNum);
  704. myParams.push_back(strVar);
  705. }
  706. //////////////////////////////////////////////////////////////////////////
  707. //构造其他参数
  708. StructureParams(myParams);
  709. //发送并接受数据
  710. strResult = SendAndRecvPackage(myParams);
  711. return strResult;
  712. }
  713. ///  发送消息:
  714. string CApiClient::SendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue)
  715. {
  716. if (NULL == m_pcurl)
  717. {
  718. m_pcurl = curl_easy_init();
  719. }
  720. list<string> myParams;
  721. string strVar;
  722. string strResult;
  723. //////////////////////////////////////////////////////////////////////////
  724. // methodname 
  725. strVar =  string("method=") + string("within.sendInfo");
  726. myParams.push_back(strVar);
  727. //////////////////////////////////////////////////////////////////////////
  728. // User ID
  729. if (NULL != strUserId)
  730. {
  731. strVar =  string("uid=") + string(strUserId);
  732. myParams.push_back(strVar);
  733. }
  734. //////////////////////////////////////////////////////////////////////////
  735. // friendId
  736. if (NULL != strFriendID)
  737. {
  738. strVar =  string("friendId=") + string(strFriendID);
  739. myParams.push_back(strVar);
  740. }
  741. //////////////////////////////////////////////////////////////////////////
  742. // sendValue
  743. if (NULL != strSendValue)
  744. {
  745. strVar =  string("sendValue=") + string(strSendValue);
  746. myParams.push_back(strVar);
  747. }
  748. //////////////////////////////////////////////////////////////////////////
  749. //构造其他参数
  750. StructureParams(myParams);
  751. //发送并接受数据
  752. strResult = SendAndRecvPackage(myParams);
  753. return strResult;
  754. }
  755. ///  回复消息:
  756. string CApiClient::ResendMsg(const char *strUserId, const char *strFriendID, const char *strSendValue)
  757. {
  758. if (NULL == m_pcurl)
  759. {
  760. m_pcurl = curl_easy_init();
  761. }
  762. list<string> myParams;
  763. string strVar;
  764. string strResult;
  765. //////////////////////////////////////////////////////////////////////////
  766. // methodname 
  767. strVar =  string("method=") + string("within.restoreInfo");
  768. myParams.push_back(strVar);
  769. //////////////////////////////////////////////////////////////////////////
  770. // User ID
  771. if (NULL != strUserId)
  772. {
  773. strVar =  string("uid=") + string(strUserId);
  774. myParams.push_back(strVar);
  775. }
  776. //////////////////////////////////////////////////////////////////////////
  777. // friendId
  778. if (NULL != strFriendID)
  779. {
  780. strVar =  string("friendId=") + string(strFriendID);
  781. myParams.push_back(strVar);
  782. }
  783. //////////////////////////////////////////////////////////////////////////
  784. // sendValue
  785. if (NULL != strSendValue)
  786. {
  787. strVar =  string("sendValue=") + string(strSendValue);
  788. myParams.push_back(strVar);
  789. }
  790. //////////////////////////////////////////////////////////////////////////
  791. //构造其他参数
  792. StructureParams(myParams);
  793. //发送并接受数据
  794. strResult = SendAndRecvPackage(myParams);
  795. return strResult;
  796. }
  797. ///  获取所有好友列表:
  798. ///uid=250DEAD&startIndex=1&maxNum=10&method=friend.getall&timestamp=32432&
  799. ///sessionkey=sdfsdf&appkey=kasdfas&v=1.0&format=jason&sig=ADF578909
  800. string CApiClient::GetAllFrd(const char *strUserId, const char *strIndex, const char *strMaxNum)
  801. {
  802. if (NULL == m_pcurl)
  803. {
  804. m_pcurl = curl_easy_init();
  805. }
  806. list<string> myParams;
  807. string strVar;
  808. string strResult;
  809. //////////////////////////////////////////////////////////////////////////
  810. // methodname 
  811. strVar =  string("method=") + string("friend.getAll");
  812. myParams.push_back(strVar);
  813. //////////////////////////////////////////////////////////////////////////
  814. // User ID
  815. if (NULL != strUserId)
  816. {
  817. strVar =  string("uid=") + string(strUserId);
  818. myParams.push_back(strVar);
  819. }
  820. //////////////////////////////////////////////////////////////////////////
  821. // startIndex
  822. if (NULL != strIndex)
  823. {
  824. strVar =  string("startIndex=") + string(strIndex);
  825. myParams.push_back(strVar);
  826. }
  827. //////////////////////////////////////////////////////////////////////////
  828. // maxNum
  829. if (NULL != strMaxNum)
  830. {
  831. strVar =  string("maxNum=") + string(strMaxNum);
  832. myParams.push_back(strVar);
  833. }
  834. //////////////////////////////////////////////////////////////////////////
  835. //构造其他参数
  836. StructureParams(myParams);
  837. //发送并接受数据
  838. strResult = SendAndRecvPackage(myParams);
  839. return strResult;
  840. }
  841. ///  增加好友:
  842. string CApiClient::AddFrd(const char *strUserId, const char *strFriendID)
  843. {
  844. string strResult;
  845. return strResult;
  846. }
  847. ///  删除好友:
  848. string CApiClient::DelFrd(const char *strUserId, const char *strFriendID)
  849. {
  850. string strResult;
  851. return strResult;
  852. }
  853. ///  好友空间:
  854. string CApiClient::GetFrdSpace(const char *strUserId, const char *strFriendID)
  855. {
  856. if (NULL == m_pcurl)
  857. {
  858. m_pcurl = curl_easy_init();
  859. }
  860. list<string> myParams;
  861. string strVar;
  862. string strResult;
  863. //////////////////////////////////////////////////////////////////////////
  864. // methodname 
  865. strVar =  string("method=") + string("friend.friendHome");
  866. myParams.push_back(strVar);
  867. //////////////////////////////////////////////////////////////////////////
  868. // User ID
  869. if (NULL != strUserId)
  870. {
  871. strVar =  string("uid=") + string(strUserId);
  872. myParams.push_back(strVar);
  873. }
  874. //////////////////////////////////////////////////////////////////////////
  875. // startIndex
  876. if (NULL != strFriendID)
  877. {
  878. strVar =  string("friendId=") + string(strFriendID);
  879. myParams.push_back(strVar);
  880. }
  881. //////////////////////////////////////////////////////////////////////////
  882. //构造其他参数
  883. StructureParams(myParams);
  884. //发送并接受数据
  885. strResult = SendAndRecvPackage(myParams);
  886. return strResult;
  887. }
  888. ///  获取好友动态信息:
  889. string CApiClient::GetFrdNewsFeed(const char *strUserId, const char *strIndex, const char *strMaxNum)
  890. {
  891. if (NULL == m_pcurl)
  892. {
  893. m_pcurl = curl_easy_init();
  894. }
  895. list<string> myParams;
  896. string strVar;
  897. string strResult;
  898. //////////////////////////////////////////////////////////////////////////
  899. // methodname 
  900. strVar =  string("method=") + string("friend.getNewsFeed");
  901. myParams.push_back(strVar);
  902. //////////////////////////////////////////////////////////////////////////
  903. // User ID
  904. if (NULL != strUserId)
  905. {
  906. strVar =  string("uid=") + string(strUserId);
  907. myParams.push_back(strVar);
  908. }
  909. //////////////////////////////////////////////////////////////////////////
  910. // startIndex
  911. if (NULL != strIndex)
  912. {
  913. strVar =  string("startIndex=") + string(strIndex);
  914. myParams.push_back(strVar);
  915. }
  916. //////////////////////////////////////////////////////////////////////////
  917. // startIndex
  918. if (NULL != strMaxNum)
  919. {
  920. strVar =  string("maxNum=") + string(strMaxNum);
  921. myParams.push_back(strVar);
  922. }
  923. //////////////////////////////////////////////////////////////////////////
  924. //构造其他参数
  925. StructureParams(myParams);
  926. //发送并接受数据
  927. strResult = SendAndRecvPackage(myParams);
  928. return strResult;
  929. }
  930. /// 获取分组:
  931. string CApiClient::GetTeam(const char *strUserId, const char *strIndex, const char *strMaxNum)
  932. {
  933. if (NULL == m_pcurl)
  934. {
  935. m_pcurl = curl_easy_init();
  936. }
  937. list<string> myParams;
  938. string strVar;
  939. string strResult;
  940. //////////////////////////////////////////////////////////////////////////
  941. // methodname 
  942. strVar =  string("method=") + string("friend.getGrouping");
  943. myParams.push_back(strVar);
  944. //////////////////////////////////////////////////////////////////////////
  945. // User ID 
  946. if (NULL != strUserId)
  947. {
  948. strVar =  string("uid=") + string(strUserId);
  949. myParams.push_back(strVar);
  950. }
  951. //////////////////////////////////////////////////////////////////////////
  952. // startIndex 
  953. if (NULL != strIndex)
  954. {
  955. strVar =  string("startIndex=") + string(strIndex);
  956. myParams.push_back(strVar);
  957. }
  958. //////////////////////////////////////////////////////////////////////////
  959. // maxNum 
  960. if (NULL != strMaxNum)
  961. {
  962. strVar =  string("maxNum=") + string(strMaxNum);
  963. myParams.push_back(strVar);
  964. }
  965. //////////////////////////////////////////////////////////////////////////
  966. //构造其他参数
  967. StructureParams(myParams);
  968. //发送并接受数据
  969. strResult = SendAndRecvPackage(myParams);
  970. return strResult;
  971. }
  972. ///  增加分组:
  973. string CApiClient::AddTeam()
  974. {
  975. string strResult;
  976. return strResult;
  977. }
  978. ///  移动到组:
  979. string CApiClient::MovetoTeam()
  980. {
  981. string strResult;
  982. return strResult;
  983. }
  984. ///  重命名组:
  985. string CApiClient::RenameTeam()
  986. {
  987. string strResult;
  988. return strResult;
  989. }
  990. ///  获取店铺信息:
  991. string CApiClient::GetStoreMsg(const char *strUserId, const char *strShopID)
  992. {
  993. if (NULL == m_pcurl)
  994. {
  995. m_pcurl = curl_easy_init();
  996. }
  997. list<string> myParams;
  998. string strVar;
  999. string strResult;
  1000. //////////////////////////////////////////////////////////////////////////
  1001. // methodname 
  1002. strVar =  string("method=") + string("shop.getShopInfo");
  1003. myParams.push_back(strVar);
  1004. //////////////////////////////////////////////////////////////////////////
  1005. // User ID
  1006. if (NULL != strUserId)
  1007. {
  1008. strVar =  string("uid=") + string(strUserId);
  1009. myParams.push_back(strVar);
  1010. }
  1011. //////////////////////////////////////////////////////////////////////////
  1012. // ShopID
  1013. if (NULL != strShopID)
  1014. {
  1015. strVar =  string("shopId=") + string(strShopID);
  1016. myParams.push_back(strVar);
  1017. }
  1018. //////////////////////////////////////////////////////////////////////////
  1019. //构造其他参数
  1020. StructureParams(myParams);
  1021. //发送并接受数据
  1022. strResult = SendAndRecvPackage(myParams);
  1023. return strResult;
  1024. }
  1025. ///  订阅店铺:
  1026. string CApiClient::SubscribeStore(const char *strUserId, const char *strShopID)
  1027. {
  1028. if (NULL == m_pcurl)
  1029. {
  1030. m_pcurl = curl_easy_init();
  1031. }
  1032. list<string> myParams;
  1033. string strVar;
  1034. string strResult;
  1035. //////////////////////////////////////////////////////////////////////////
  1036. // methodname 
  1037. strVar =  string("method=") + string("shop.subscribeShop");
  1038. myParams.push_back(strVar);
  1039. //////////////////////////////////////////////////////////////////////////
  1040. // User ID
  1041. if (NULL != strUserId)
  1042. {
  1043. strVar =  string("uid=") + string(strUserId);
  1044. myParams.push_back(strVar);
  1045. }
  1046. //////////////////////////////////////////////////////////////////////////
  1047. // ShopID
  1048. if (NULL != strShopID)
  1049. {
  1050. strVar =  string("shopId=") + string(strShopID);
  1051. myParams.push_back(strVar);
  1052. }
  1053. //////////////////////////////////////////////////////////////////////////
  1054. //构造其他参数
  1055. StructureParams(myParams);
  1056. //发送并接受数据
  1057. strResult = SendAndRecvPackage(myParams);
  1058. return strResult;
  1059. }
  1060. ///  获取掌柜推荐:
  1061. string CApiClient::GetShopKeeperRecom(const char *strUserId, const char *strShopKeeperId,const char *strIndex, const char *strMaxNum)
  1062. {
  1063. if (NULL == m_pcurl)
  1064. {
  1065. m_pcurl = curl_easy_init();
  1066. }
  1067. list<string> myParams;
  1068. string strVar;
  1069. string strResult;
  1070. //////////////////////////////////////////////////////////////////////////
  1071. // methodname 
  1072. strVar =  string("method=") + string("shop.getShopkeeperRec");
  1073. myParams.push_back(strVar);
  1074. //////////////////////////////////////////////////////////////////////////
  1075. // User ID
  1076. if (NULL != strUserId)
  1077. {
  1078. strVar =  string("uid=") + string(strUserId);
  1079. myParams.push_back(strVar);
  1080. }
  1081. //////////////////////////////////////////////////////////////////////////
  1082. // ShopKeeperId
  1083. if (NULL != strShopKeeperId)
  1084. {
  1085. strVar =  string("shopkeeperId=") + string(strShopKeeperId);
  1086. myParams.push_back(strVar);
  1087. }
  1088. //////////////////////////////////////////////////////////////////////////
  1089. // startIndex
  1090. if (NULL != strIndex)
  1091. {
  1092. strVar =  string("startIndex=") + string(strIndex);
  1093. myParams.push_back(strVar);
  1094. }
  1095. //////////////////////////////////////////////////////////////////////////
  1096. // startIndex
  1097. if (NULL != strMaxNum)
  1098. {
  1099. strVar =  string("maxNum=") + string(strMaxNum);
  1100. myParams.push_back(strVar);
  1101. }
  1102. //////////////////////////////////////////////////////////////////////////
  1103. //构造其他参数
  1104. StructureParams(myParams);
  1105. //发送并接受数据
  1106. strResult = SendAndRecvPackage(myParams);
  1107. return strResult;
  1108. }
  1109. ///  获取店铺应用:
  1110. string CApiClient::GetStoreUse(const char *strUserId, const char *strShopId,const char *strIndex, const char *strMaxNum, const char *strOrderByName, const char *strOrderDirec)
  1111. {
  1112. if (NULL == m_pcurl)
  1113. {
  1114. m_pcurl = curl_easy_init();
  1115. }
  1116. list<string> myParams;
  1117. string strVar;
  1118. string strResult;
  1119. //////////////////////////////////////////////////////////////////////////
  1120. // methodname 
  1121. strVar =  string("method=") + string("shop.getShopApp");
  1122. myParams.push_back(strVar);
  1123. //////////////////////////////////////////////////////////////////////////
  1124. // User ID
  1125. if (NULL != strUserId)
  1126. {
  1127. strVar =  string("uid=") + string(strUserId);
  1128. myParams.push_back(strVar);
  1129. }
  1130. //////////////////////////////////////////////////////////////////////////
  1131. // ShopKeeperId
  1132. if (NULL != strShopId)
  1133. {
  1134. strVar =  string("shopId=") + string(strShopId);
  1135. myParams.push_back(strVar);
  1136. }
  1137. //////////////////////////////////////////////////////////////////////////
  1138. // startIndex
  1139. if (NULL != strIndex)
  1140. {
  1141. strVar =  string("startIndex=") + string(strIndex);
  1142. myParams.push_back(strVar);
  1143. }
  1144. //////////////////////////////////////////////////////////////////////////
  1145. // maxNum
  1146. if (NULL != strMaxNum)
  1147. {
  1148. strVar =  string("maxNum=") + string(strMaxNum);
  1149. myParams.push_back(strVar);
  1150. }
  1151. //////////////////////////////////////////////////////////////////////////
  1152. //orderByName
  1153. if (NULL != strOrderByName)
  1154. {
  1155. strVar =  string("orderByName=") + string(strOrderByName);
  1156. myParams.push_back(strVar);
  1157. }
  1158. //////////////////////////////////////////////////////////////////////////
  1159. //orderDirec  
  1160. if (NULL != strOrderDirec)
  1161. {
  1162. strVar =  string("orderDirec=") + string(strOrderDirec);
  1163. myParams.push_back(strVar);
  1164. }
  1165. //////////////////////////////////////////////////////////////////////////
  1166. //构造其他参数
  1167. StructureParams(myParams);
  1168. //发送并接受数据
  1169. strResult = SendAndRecvPackage(myParams);
  1170. return strResult;
  1171. }
  1172. ///  获取成交记录:
  1173. string CApiClient::GetDealRecord()
  1174. {
  1175. string strResult;
  1176. return strResult;
  1177. }
  1178. ///  获取买家须知:
  1179. string CApiClient::GetBuyerNotice(const char *strUserId, const char *strShopId)
  1180. {
  1181. if (NULL == m_pcurl)
  1182. {
  1183. m_pcurl = curl_easy_init();
  1184. }
  1185. list<string> myParams;
  1186. string strVar;
  1187. string strResult;
  1188. //////////////////////////////////////////////////////////////////////////
  1189. // methodname 
  1190. strVar =  string("method=") + string("shop.getBuyerPost");
  1191. myParams.push_back(strVar);
  1192. //////////////////////////////////////////////////////////////////////////
  1193. // User ID
  1194. if (NULL != strUserId)
  1195. {
  1196. strVar =  string("uid=") + string(strUserId);
  1197. myParams.push_back(strVar);
  1198. }
  1199. //////////////////////////////////////////////////////////////////////////
  1200. // ShopID
  1201. if (NULL != strShopId)
  1202. {
  1203. strVar =  string("shopId=") + string(strShopId);
  1204. myParams.push_back(strVar);
  1205. }
  1206. //////////////////////////////////////////////////////////////////////////
  1207. //构造其他参数
  1208. StructureParams(myParams);
  1209. //发送并接受数据
  1210. strResult = SendAndRecvPackage(myParams);
  1211. return strResult;
  1212. }
  1213. ///  根据应用ID获取附件ID:
  1214. string CApiClient::GetAffixByApp(const char *strUserId, const char *strAppId)
  1215. {
  1216. if (NULL == m_pcurl)
  1217. {
  1218. m_pcurl = curl_easy_init();
  1219. }
  1220. list<string> myParams;
  1221. string strVar;
  1222. string strResult;
  1223. //////////////////////////////////////////////////////////////////////////
  1224. // methodname 
  1225. strVar =  string("method=") + string("app.getAffixByApp");
  1226. myParams.push_back(strVar);
  1227. //////////////////////////////////////////////////////////////////////////
  1228. // User ID
  1229. if (NULL != strUserId)
  1230. {
  1231. strVar =  string("uid=") + string(strUserId);
  1232. myParams.push_back(strVar);
  1233. }
  1234. //////////////////////////////////////////////////////////////////////////
  1235. // AppId
  1236. if (NULL != strAppId)
  1237. {
  1238. strVar =  string("appId=") + string(strAppId);
  1239. myParams.push_back(strVar);
  1240. }
  1241. //////////////////////////////////////////////////////////////////////////
  1242. //构造其他参数
  1243. StructureParams(myParams);
  1244. //发送并接受数据
  1245. strResult = SendAndRecvPackage(myParams);
  1246. return strResult;
  1247. }
  1248. ///  购买应用:
  1249. string CApiClient::BuyUse(const char *strUserId, const char *strAppId, const char *strAffixId)
  1250. {
  1251. if (NULL == m_pcurl)
  1252. {
  1253. m_pcurl = curl_easy_init();
  1254. }
  1255. list<string> myParams;
  1256. string strVar;
  1257. string strResult;
  1258. //////////////////////////////////////////////////////////////////////////
  1259. // methodname 
  1260. strVar =  string("method=") + string("app.buy");
  1261. myParams.push_back(strVar);
  1262. //////////////////////////////////////////////////////////////////////////
  1263. // User ID
  1264. if (NULL != strUserId)
  1265. {
  1266. strVar =  string("uid=") + string(strUserId);
  1267. myParams.push_back(strVar);
  1268. }
  1269. //////////////////////////////////////////////////////////////////////////
  1270. // AppId
  1271. if (NULL != strAppId)
  1272. {
  1273. strVar =  string("appId=") + string(strAppId);
  1274. myParams.push_back(strVar);
  1275. }
  1276. //////////////////////////////////////////////////////////////////////////
  1277. // affixId
  1278. if (NULL != strAffixId)
  1279. {
  1280. strVar =  string("affixId=") + string(strAffixId);
  1281. myParams.push_back(strVar);
  1282. }
  1283. //////////////////////////////////////////////////////////////////////////
  1284. //构造其他参数
  1285. StructureParams(myParams);
  1286. //发送并接受数据
  1287. strResult = SendAndRecvPackage(myParams);
  1288. return strResult;
  1289. }
  1290. ///  下载应用:
  1291. string CApiClient::DownloadUse(const char *strUserId, const char *strAppId, const char *strAffixId)
  1292. {
  1293. if (NULL == m_pcurl)
  1294. {
  1295. m_pcurl = curl_easy_init();
  1296. }
  1297. list<string> myParams;
  1298. string strVar;
  1299. string strResult;
  1300. //////////////////////////////////////////////////////////////////////////
  1301. // methodname 
  1302. strVar =  string("method=") + string("app.down");
  1303. myParams.push_back(strVar);
  1304. //////////////////////////////////////////////////////////////////////////
  1305. // User ID
  1306. if (NULL != strUserId)
  1307. {
  1308. strVar =  string("uid=") + string(strUserId);
  1309. myParams.push_back(strVar);
  1310. }
  1311. //////////////////////////////////////////////////////////////////////////
  1312. // AppId
  1313. if (NULL != strAppId)
  1314. {
  1315. strVar =  string("appId=") + string(strAppId);
  1316. myParams.push_back(strVar);
  1317. }
  1318. //////////////////////////////////////////////////////////////////////////
  1319. // affixId
  1320. if (NULL != strAffixId)
  1321. {
  1322. strVar =  string("affixId=") + string(strAffixId);
  1323. myParams.push_back(strVar);
  1324. }
  1325. //////////////////////////////////////////////////////////////////////////
  1326. //构造其他参数
  1327. StructureParams(myParams);
  1328. //发送并接受数据
  1329. strResult = SendAndRecvPackage(myParams);
  1330. return strResult;
  1331. }
  1332. ///  设置推荐应用:
  1333. string CApiClient::SetRecomUse(const char *strUserId, const char *strAppId, const char *strArea, const char *strFriendID)
  1334. {
  1335. if (NULL == m_pcurl)
  1336. {
  1337. m_pcurl = curl_easy_init();
  1338. }
  1339. list<string> myParams;
  1340. string strVar;
  1341. string strResult;
  1342. //////////////////////////////////////////////////////////////////////////
  1343. // methodname 
  1344. strVar =  string("method=") + string("app.recommend");
  1345. myParams.push_back(strVar);
  1346. //////////////////////////////////////////////////////////////////////////
  1347. // User ID
  1348. if (NULL != strUserId)
  1349. {
  1350. strVar =  string("uid=") + string(strUserId);
  1351. myParams.push_back(strVar);
  1352. }
  1353. //////////////////////////////////////////////////////////////////////////
  1354. // AppId
  1355. if (NULL != strAppId)
  1356. {
  1357. strVar =  string("appId=") + string(strAppId);
  1358. myParams.push_back(strVar);
  1359. }
  1360. //////////////////////////////////////////////////////////////////////////
  1361. // strArea
  1362. if (NULL != strArea)
  1363. {
  1364. strVar =  string("area=") + string(strArea);
  1365. myParams.push_back(strVar);
  1366. }
  1367. //////////////////////////////////////////////////////////////////////////
  1368. // strFriendID
  1369. if (NULL != strFriendID)
  1370. {
  1371. strVar =  string("friendId=") + string(strFriendID);
  1372. myParams.push_back(strVar);
  1373. }
  1374. //////////////////////////////////////////////////////////////////////////
  1375. //构造其他参数
  1376. StructureParams(myParams);
  1377. //发送并接受数据
  1378. strResult = SendAndRecvPackage(myParams);
  1379. return strResult;
  1380. }
  1381. ///  评价应用:
  1382. string CApiClient::EvaluateUse(const char *strUserId, const char *strAppId, const char *strAppRate, const char *strContent)
  1383. {
  1384. if (NULL == m_pcurl)
  1385. {
  1386. m_pcurl = curl_easy_init();
  1387. }
  1388. list<string> myParams;
  1389. string strVar;
  1390. string strResult;
  1391. //////////////////////////////////////////////////////////////////////////
  1392. // methodname 
  1393. strVar =  string("method=") + string("app.evaluate");
  1394. myParams.push_back(strVar);
  1395. //////////////////////////////////////////////////////////////////////////
  1396. // User ID
  1397. if (NULL != strUserId)
  1398. {
  1399. strVar =  string("uid=") + string(strUserId);
  1400. myParams.push_back(strVar);
  1401. }
  1402. //////////////////////////////////////////////////////////////////////////
  1403. // AppId
  1404. if (NULL != strAppId)
  1405. {
  1406. strVar =  string("appId=") + string(strAppId);
  1407. myParams.push_back(strVar);
  1408. }
  1409. //////////////////////////////////////////////////////////////////////////
  1410. // appRate  
  1411. if (NULL != strAppRate)
  1412. {
  1413. strVar =  string("appRate=") + string(strAppRate);
  1414. myParams.push_back(strVar);
  1415. }
  1416. //////////////////////////////////////////////////////////////////////////
  1417. // content
  1418. if (NULL != strContent)
  1419. {
  1420. strVar =  string("content=") + string(strContent);
  1421. myParams.push_back(strVar);
  1422. }
  1423. //////////////////////////////////////////////////////////////////////////
  1424. //构造其他参数
  1425. StructureParams(myParams);
  1426. //发送并接受数据
  1427. strResult = SendAndRecvPackage(myParams);
  1428. return strResult;
  1429. }
  1430. ///  获取应用详情:
  1431. string CApiClient::GetUseDetail(const char *strUserId, const char *strAppId)
  1432. {
  1433. if (NULL == m_pcurl)
  1434. {
  1435. m_pcurl = curl_easy_init();
  1436. }
  1437. list<string> myParams;
  1438. string strVar;
  1439. string strResult;
  1440. //////////////////////////////////////////////////////////////////////////
  1441. // methodname 
  1442. strVar =  string("method=") + string("appinfo.getAppInfo");
  1443. myParams.push_back(strVar);
  1444. //////////////////////////////////////////////////////////////////////////
  1445. // User ID
  1446. if (NULL != strUserId)
  1447. {
  1448. strVar =  string("uid=") + string(strUserId);
  1449. myParams.push_back(strVar);
  1450. }
  1451. //////////////////////////////////////////////////////////////////////////
  1452. // AppId
  1453. if (NULL != strAppId)
  1454. {
  1455. strVar =  string("appId=") + string(strAppId);
  1456. myParams.push_back(strVar);
  1457. }
  1458. //////////////////////////////////////////////////////////////////////////
  1459. //构造其他参数
  1460. StructureParams(myParams);
  1461. //发送并接受数据
  1462. strResult = SendAndRecvPackage(myParams);
  1463. return strResult;
  1464. }
  1465. ///  获取相关应用:
  1466. string CApiClient::GetOtherUse(const char *strUserId, const char *strAppId,const char *strIndex, const char *strMaxNum)
  1467. {
  1468. if (NULL == m_pcurl)
  1469. {
  1470. m_pcurl = curl_easy_init();
  1471. }
  1472. list<string> myParams;
  1473. string strVar;
  1474. string strResult;
  1475. //////////////////////////////////////////////////////////////////////////
  1476. // methodname 
  1477. strVar =  string("method=") + string("appinfo.getRelativeApp");
  1478. myParams.push_back(strVar);
  1479. //////////////////////////////////////////////////////////////////////////
  1480. // User ID
  1481. if (NULL != strUserId)
  1482. {
  1483. strVar =  string("uid=") + string(strUserId);
  1484. myParams.push_back(strVar);
  1485. }
  1486. //////////////////////////////////////////////////////////////////////////
  1487. // AppId
  1488. if (NULL != strAppId)
  1489. {
  1490. strVar =  string("appId=") + string(strAppId);
  1491. myParams.push_back(strVar);
  1492. }
  1493. //////////////////////////////////////////////////////////////////////////
  1494. // startIndex  
  1495. if (NULL != strIndex)
  1496. {
  1497. strVar =  string("startIndex=") + string(strIndex);
  1498. myParams.push_back(strVar);
  1499. }
  1500. //////////////////////////////////////////////////////////////////////////
  1501. // maxNum 
  1502. if (NULL != strMaxNum)
  1503. {
  1504. strVar =  string("maxNum=") + string(strMaxNum);
  1505. myParams.push_back(strVar);
  1506. }
  1507. //////////////////////////////////////////////////////////////////////////
  1508. //构造其他参数
  1509. StructureParams(myParams);
  1510. //发送并接受数据
  1511. strResult = SendAndRecvPackage(myParams);
  1512. return strResult;
  1513. }
  1514. ///  获取应用说明:
  1515. string CApiClient::GetUseIntroduction()
  1516. {
  1517. string strResult;
  1518. return strResult;
  1519. }
  1520. ///  获取评价详情:
  1521. string CApiClient::GetEvaluateDetail(const char *strUserId, const char *strAppId,const char *strIndex, const char *strMaxNum)
  1522. {
  1523. if (NULL == m_pcurl)
  1524. {
  1525. m_pcurl = curl_easy_init();
  1526. }
  1527. list<string> myParams;
  1528. string strVar;
  1529. string strResult;
  1530. //////////////////////////////////////////////////////////////////////////
  1531. // methodname 
  1532. strVar =  string("method=") + string("appinfo.getEvaluate");
  1533. myParams.push_back(strVar);
  1534. //////////////////////////////////////////////////////////////////////////
  1535. // User ID
  1536. if (NULL != strUserId)
  1537. {
  1538. strVar =  string("uid=") + string(strUserId);
  1539. myParams.push_back(strVar);
  1540. }
  1541. //////////////////////////////////////////////////////////////////////////
  1542. // AppId
  1543. if (NULL != strAppId)
  1544. {
  1545. strVar =  string("appId=") + string(strAppId);
  1546. myParams.push_back(strVar);
  1547. }
  1548. //////////////////////////////////////////////////////////////////////////
  1549. // startIndex  
  1550. if (NULL != strIndex)
  1551. {
  1552. strVar =  string("startIndex=") + string(strIndex);
  1553. myParams.push_back(strVar);
  1554. }
  1555. //////////////////////////////////////////////////////////////////////////
  1556. // maxNum 
  1557. if (NULL != strMaxNum)
  1558. {
  1559. strVar =  string("maxNum=") + string(strMaxNum);
  1560. myParams.push_back(strVar);
  1561. }
  1562. //////////////////////////////////////////////////////////////////////////
  1563. //构造其他参数
  1564. StructureParams(myParams);
  1565. //发送并接受数据
  1566. strResult = SendAndRecvPackage(myParams);
  1567. return strResult;
  1568. }
  1569. ///  成交记录:
  1570. string CApiClient::DealRecord()
  1571. {
  1572. string strResult;
  1573. return strResult;
  1574. }
  1575. ///  留言簿:
  1576. string CApiClient::VisitorBook(const char *strUserId, const char *strAppId,const char *strIndex, const char *strMaxNum)
  1577. {
  1578. if (NULL == m_pcurl)
  1579. {
  1580. m_pcurl = curl_easy_init();
  1581. }
  1582. list<string> myParams;
  1583. string strVar;
  1584. string strResult;
  1585. //////////////////////////////////////////////////////////////////////////
  1586. // methodname 
  1587. strVar =  string("method=") + string("appinfo.getGuestbook");
  1588. myParams.push_back(strVar);
  1589. //////////////////////////////////////////////////////////////////////////
  1590. // User ID
  1591. if (NULL != strUserId)
  1592. {
  1593. strVar =  string("uid=") + string(strUserId);
  1594. myParams.push_back(strVar);
  1595. }
  1596. //////////////////////////////////////////////////////////////////////////
  1597. // AppId
  1598. if (NULL != strAppId)
  1599. {
  1600. strVar =  string("appId=") + string(strAppId);
  1601. myParams.push_back(strVar);
  1602. }
  1603. //////////////////////////////////////////////////////////////////////////
  1604. // startIndex  
  1605. if (NULL != strIndex)
  1606. {
  1607. strVar =  string("startIndex=") + string(strIndex);
  1608. myParams.push_back(strVar);
  1609. }
  1610. //////////////////////////////////////////////////////////////////////////
  1611. // maxNum 
  1612. if (NULL != strMaxNum)
  1613. {
  1614. strVar =  string("maxNum=") + string(strMaxNum);
  1615. myParams.push_back(strVar);
  1616. }
  1617. //////////////////////////////////////////////////////////////////////////
  1618. //构造其他参数
  1619. StructureParams(myParams);
  1620. //发送并接受数据
  1621. strResult = SendAndRecvPackage(myParams);
  1622. return strResult;
  1623. }
  1624. ///  获取店铺精品列表:
  1625. string CApiClient::GetBoutiqueList(const char *strUserId, const char *strIndex, const char *strMaxNum)
  1626. {
  1627. if (NULL == m_pcurl)
  1628. {
  1629. m_pcurl = curl_easy_init();
  1630. }
  1631. list<string> myParams;
  1632. string strVar;
  1633. string strResult;
  1634. //////////////////////////////////////////////////////////////////////////
  1635. // methodname 
  1636. strVar =  string("method=") + string("goodshop.get");
  1637. myParams.push_back(strVar);
  1638. //////////////////////////////////////////////////////////////////////////
  1639. // User ID
  1640. if (NULL != strUserId)
  1641. {
  1642. strVar =  string("uid=") + string(strUserId);
  1643. myParams.push_back(strVar);
  1644. }
  1645. //////////////////////////////////////////////////////////////////////////
  1646. // startIndex  
  1647. if (NULL != strIndex)
  1648. {
  1649. strVar =  string("startIndex=") + string(strIndex);
  1650. myParams.push_back(strVar);
  1651. }
  1652. //////////////////////////////////////////////////////////////////////////
  1653. // maxNum 
  1654. if (NULL != strMaxNum)
  1655. {
  1656. strVar =  string("maxNum=") + string(strMaxNum);
  1657. myParams.push_back(strVar);
  1658. }
  1659. //////////////////////////////////////////////////////////////////////////
  1660. //构造其他参数
  1661. StructureParams(myParams);
  1662. //发送并接受数据
  1663. strResult = SendAndRecvPackage(myParams);
  1664. return strResult;
  1665. }
  1666. ///  获取店铺排行:
  1667. string CApiClient::GetStoreRanking(const char *strUserId, const char *strIndex, const char *strMaxNum, const char *strCondition, const char *strOrderDirec)
  1668. {
  1669. if (NULL == m_pcurl)
  1670. {
  1671. m_pcurl = curl_easy_init();
  1672. }
  1673. list<string> myParams;
  1674. string strVar;
  1675. string strResult;
  1676. //////////////////////////////////////////////////////////////////////////
  1677. // methodname 
  1678. strVar =  string("method=") + string("shopinfo.get");
  1679. myParams.push_back(strVar);
  1680. //////////////////////////////////////////////////////////////////////////
  1681. // User ID
  1682. if (NULL != strUserId)
  1683. {
  1684. strVar =  string("uid=") + string(strUserId);
  1685. myParams.push_back(strVar);
  1686. }
  1687. //////////////////////////////////////////////////////////////////////////
  1688. // startIndex
  1689. if (NULL != strIndex)
  1690. {
  1691. strVar =  string("startIndex=") + string(strIndex);
  1692. myParams.push_back(strVar);
  1693. }
  1694. //////////////////////////////////////////////////////////////////////////
  1695. // maxNum
  1696. if (NULL != strMaxNum)
  1697. {
  1698. strVar =  string("maxNum=") + string(strMaxNum);
  1699. myParams.push_back(strVar);
  1700. }
  1701. //////////////////////////////////////////////////////////////////////////
  1702. //orderByName
  1703. if (NULL != strCondition)
  1704. {
  1705. strVar =  string("condition=") + string(strCondition);
  1706. myParams.push_back(strVar);
  1707. }
  1708. //////////////////////////////////////////////////////////////////////////
  1709. //orderDirec  
  1710. if (NULL != strOrderDirec)
  1711. {
  1712. strVar =  string("orderDirec=") + string(strOrderDirec);
  1713. myParams.push_back(strVar);
  1714. }
  1715. //////////////////////////////////////////////////////////////////////////
  1716. //构造其他参数
  1717. StructureParams(myParams);
  1718. //发送并接受数据
  1719. strResult = SendAndRecvPackage(myParams);
  1720. return strResult;
  1721. }
  1722. ///  获取应用排行:
  1723. string CApiClient::GetUseRanking(const char *strUserId, const char *strAppGroupId, const char *strIndex, const char *strMaxNum, const char *strCondition, const char *strOrderDirec)
  1724. {
  1725. if (NULL == m_pcurl)
  1726. {
  1727. m_pcurl = curl_easy_init();
  1728. }
  1729. list<string> myParams;
  1730. string strVar;
  1731. string strResult;
  1732. //////////////////////////////////////////////////////////////////////////
  1733. // methodname 
  1734. strVar =  string("method=") + string("group.getApp");
  1735. myParams.push_back(strVar);
  1736. //////////////////////////////////////////////////////////////////////////
  1737. // User ID
  1738. if (NULL != strUserId)
  1739. {
  1740. strVar =  string("uid=") + string(strUserId);
  1741. myParams.push_back(strVar);
  1742. }
  1743. //////////////////////////////////////////////////////////////////////////
  1744. // AppGroupId
  1745. if (NULL != strAppGroupId)
  1746. {
  1747. strVar =  string("appGroupId=") + string(strAppGroupId);
  1748. myParams.push_back(strVar);
  1749. }
  1750. //////////////////////////////////////////////////////////////////////////
  1751. // startIndex
  1752. if (NULL != strIndex)
  1753. {
  1754. strVar =  string("startIndex=") + string(strIndex);
  1755. myParams.push_back(strVar);
  1756. }
  1757. //////////////////////////////////////////////////////////////////////////
  1758. // maxNum
  1759. if (NULL != strMaxNum)
  1760. {
  1761. strVar =  string("maxNum=") + string(strMaxNum);
  1762. myParams.push_back(strVar);
  1763. }
  1764. //////////////////////////////////////////////////////////////////////////
  1765. //orderByName
  1766. if (NULL != strCondition)
  1767. {
  1768. strVar =  string("condition=") + string(strCondition);
  1769. myParams.push_back(strVar);
  1770. }
  1771. //////////////////////////////////////////////////////////////////////////
  1772. //orderDirec  
  1773. if (NULL != strOrderDirec)
  1774. {
  1775. strVar =  string("orderDirec=") + string(strOrderDirec);
  1776. myParams.push_back(strVar);
  1777. }
  1778. //////////////////////////////////////////////////////////////////////////
  1779. //构造其他参数
  1780. StructureParams(myParams);
  1781. //发送并接受数据
  1782. strResult = SendAndRecvPackage(myParams);
  1783. return strResult;
  1784. }
  1785. ///  获取店铺动态列表
  1786. string CApiClient::GetStoreDymList(const char *strUserId, const char *strIndex, const char *strMaxNum)
  1787. {
  1788. if (NULL == m_pcurl)
  1789. {
  1790. m_pcurl = curl_easy_init();
  1791. }
  1792. list<string> myParams;
  1793. string strVar;
  1794. string strResult;
  1795. //////////////////////////////////////////////////////////////////////////
  1796. // methodname 
  1797. strVar =  string("method=") + string("storefeed.getAllNewsFeed");
  1798. myParams.push_back(strVar);
  1799. //////////////////////////////////////////////////////////////////////////
  1800. // User ID
  1801. if (NULL != strUserId)
  1802. {
  1803. strVar =  string("uid=") + string(strUserId);
  1804. myParams.push_back(strVar);
  1805. }
  1806. //////////////////////////////////////////////////////////////////////////
  1807. // startIndex
  1808. if (NULL != strIndex)
  1809. {
  1810. strVar =  string("startIndex=") + string(strIndex);
  1811. myParams.push_back(strVar);
  1812. }
  1813. //////////////////////////////////////////////////////////////////////////
  1814. // maxNum
  1815. if (NULL != strMaxNum)
  1816. {
  1817. strVar =  string("maxNum=") + string(strMaxNum);
  1818. myParams.push_back(strVar);
  1819. }
  1820. //////////////////////////////////////////////////////////////////////////
  1821. //构造其他参数
  1822. StructureParams(myParams);
  1823. //发送并接受数据
  1824. strResult = SendAndRecvPackage(myParams);
  1825. return strResult;
  1826. }
  1827. ///  获取全部个性桌面
  1828. string CApiClient::GetAllDesktopInfos(const char* strName, const char* strPass)
  1829. {
  1830. if (NULL == m_pcurl)
  1831. {
  1832. m_pcurl = curl_easy_init();
  1833. }
  1834. list<string> myParams;
  1835. string strVar;
  1836. string strResult;
  1837. //////////////////////////////////////////////////////////////////////////
  1838. // methodname 
  1839. strVar =  string("method=") + string("desktopInfo.getAllDesktopInfos");
  1840. myParams.push_back(strVar);
  1841. //////////////////////////////////////////////////////////////////////////
  1842. // uName
  1843. if (NULL != strName)
  1844. {
  1845. strVar =  string("uName=") + string(strName);
  1846. myParams.push_back(strVar);
  1847. }
  1848. //////////////////////////////////////////////////////////////////////////
  1849. // uPass
  1850. if (NULL != strPass)
  1851. {
  1852. strVar =  string("uPass=") + string(strPass);
  1853. myParams.push_back(strVar);
  1854. }
  1855. //////////////////////////////////////////////////////////////////////////
  1856. //构造其他参数
  1857. StructureParams(myParams);
  1858. //发送并接受数据
  1859. strResult = SendAndRecvPackage(myParams);
  1860. return strResult;
  1861. }
  1862. ///  删除个性桌面
  1863. string CApiClient::RemoveDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId)
  1864. {
  1865. if (NULL == m_pcurl)
  1866. {
  1867. m_pcurl = curl_easy_init();
  1868. }
  1869. list<string> myParams;
  1870. string strVar;
  1871. string strResult;
  1872. //////////////////////////////////////////////////////////////////////////
  1873. // methodname 
  1874. strVar =  string("method=") + string("desktopInfo.removeDesktopInfo");
  1875. myParams.push_back(strVar);
  1876. //////////////////////////////////////////////////////////////////////////
  1877. // uName
  1878. if (NULL != strName)
  1879. {
  1880. strVar =  string("uName=") + string(strName);
  1881. myParams.push_back(strVar);
  1882. }
  1883. //////////////////////////////////////////////////////////////////////////
  1884. // uPass
  1885. if (NULL != strPass)
  1886. {
  1887. strVar =  string("uPass=") + string(strPass);
  1888. myParams.push_back(strVar);
  1889. }
  1890. //////////////////////////////////////////////////////////////////////////
  1891. // schemeId
  1892. if (NULL != strSchemeId)
  1893. {
  1894. strVar =  string("schemeId=") + string(strSchemeId);
  1895. myParams.push_back(strVar);
  1896. }
  1897. //////////////////////////////////////////////////////////////////////////
  1898. //构造其他参数
  1899. StructureParams(myParams);
  1900. //发送并接受数据
  1901. strResult = SendAndRecvPackage(myParams);
  1902. return strResult;
  1903. }
  1904. ///  上传个性桌面
  1905. string CApiClient::UpDesktopInfo(const char* strName, const char* strPass, const char* strSchemeId, const char* strSchemeFtpUrl)
  1906. {
  1907. if (NULL == m_pcurl)
  1908. {
  1909. m_pcurl = curl_easy_init();
  1910. }
  1911. list<string> myParams;
  1912. string strVar;
  1913. string strResult;
  1914. //////////////////////////////////////////////////////////////////////////
  1915. // methodname 
  1916. strVar =  string("method=") + string("desktopInfo.upDesktopInfo");
  1917. myParams.push_back(strVar);
  1918. //////////////////////////////////////////////////////////////////////////
  1919. // uName
  1920. if (NULL != strName)
  1921. {
  1922. strVar =  string("uName=") + string(strName);
  1923. myParams.push_back(strVar);
  1924. }
  1925. //////////////////////////////////////////////////////////////////////////
  1926. // uPass
  1927. if (NULL != strPass)
  1928. {
  1929. strVar =  string("uPass=") + string(strPass);
  1930. myParams.push_back(strVar);
  1931. }
  1932. //////////////////////////////////////////////////////////////////////////
  1933. // schemeId
  1934. if (NULL != strSchemeId)
  1935. {
  1936. strVar =  string("schemeId=") + string(strSchemeId);
  1937. myParams.push_back(strVar);
  1938. }
  1939. //////////////////////////////////////////////////////////////////////////
  1940. // schemeIdFtpUrl
  1941. if (NULL != strSchemeFtpUrl)
  1942. {
  1943. strVar =  string("schemeIdFtpUrl=") + string(strSchemeFtpUrl);
  1944. myParams.push_back(strVar);
  1945. }
  1946. //////////////////////////////////////////////////////////////////////////
  1947. //构造其他参数
  1948. StructureParams(myParams);
  1949. //发送并接受数据
  1950. strResult = SendAndRecvPackage(myParams);
  1951. return strResult;
  1952. }
  1953. ///  查询个性桌面
  1954. string CApiClient::GetDesktopInfos(const char* strName, const char* strPass, const char* strSchemeId)
  1955. {
  1956. if (NULL == m_pcurl)
  1957. {
  1958. m_pcurl = curl_easy_init();
  1959. }
  1960. list<string> myParams;
  1961. string strVar;
  1962. string strResult;
  1963. //////////////////////////////////////////////////////////////////////////
  1964. // methodname 
  1965. strVar =  string("method=") + string("desktopInfo.getDesktopInfo");
  1966. myParams.push_back(strVar);
  1967. //////////////////////////////////////////////////////////////////////////
  1968. // uName
  1969. if (NULL != strName)
  1970. {
  1971. strVar =  string("uName=") + string(strName);
  1972. myParams.push_back(strVar);
  1973. }
  1974. //////////////////////////////////////////////////////////////////////////
  1975. // uPass
  1976. if (NULL != strPass)
  1977. {
  1978. strVar =  string("uPass=") + string(strPass);
  1979. myParams.push_back(strVar);
  1980. }
  1981. //////////////////////////////////////////////////////////////////////////
  1982. // schemeId
  1983. if (NULL != strSchemeId)
  1984. {
  1985. strVar =  string("schemeId=") + string(strSchemeId);
  1986. myParams.push_back(strVar);
  1987. }
  1988. //////////////////////////////////////////////////////////////////////////
  1989. //构造其他参数
  1990. StructureParams(myParams);
  1991. //发送并接受数据
  1992. strResult = SendAndRecvPackage(myParams);
  1993. return strResult;
  1994. }
  1995. string CApiClient::md5( string str)
  1996. {
  1997. md5_state_t state;
  1998. md5_byte_t digest[16];
  1999. char hex_output[16*2 + 1];
  2000. int di;
  2001. md5_init( &state );
  2002. md5_append( &state, (const md5_byte_t *) str.c_str( ), (int) strlen( str.c_str( ) ) );
  2003. md5_finish( &state, digest );
  2004. for( di = 0; di < 16; ++di )
  2005. sprintf( hex_output+di * 2, "%02x", digest[di] );
  2006. return string( hex_output );
  2007. }
  2008. string CApiClient::get_signature( list<string> params )
  2009. {
  2010. /**
  2011. * args = array of args to the request, formatted in arg=val pairs
  2012. * sorted_array = alphabetically_sort_array_by_keys(args);
  2013. * request_str = concatenate_in_order(sorted_array);
  2014. * signature = md5(concatenate(request_str, secret))
  2015. *
  2016. */
  2017. string str = get_param_string( params, false );
  2018. if( this->has_session )
  2019. str.append( this->m_strSession_key );
  2020. else
  2021. str.append( this->m_szAppSecretKey );
  2022. return md5( str );
  2023. }
  2024. string CApiClient::get_param_string( list<string> &params, bool separate )
  2025. {
  2026. list<string>::iterator iter;
  2027. string str;
  2028. params.sort( );
  2029. for( iter = params.begin( ); iter != params.end( ); iter++ )
  2030. {
  2031. str.append( *iter );
  2032. if( separate )
  2033. str.append( "&" );
  2034. }
  2035. if( separate )
  2036. str.erase( str.size() - 1, 1 );
  2037. return str;
  2038. }
  2039. size_t CApiClient::write_callback( void *ptr, size_t size, size_t nmemb, void *userp )
  2040. string *str = (string *) userp;
  2041. str->append( (char *) ptr, size*nmemb );
  2042. return size*nmemb;
  2043. }
  2044. // curl.MD5,JSON
  2045. bool CApiClient::request( string method, list<string> params, string *result )
  2046. {
  2047. curl_easy_reset( this->m_pcurl );
  2048. #ifdef fb_debug
  2049. curl_easy_setopt( m_pcurl, CURLOPT_VERBOSE, true );
  2050. #endif
  2051. // curl_easy_setopt( m_pcurl, CURLOPT_URL, this->server.c_str( ) );
  2052. curl_easy_setopt( m_pcurl, CURLOPT_URL, this->m_szWebServiceURL);
  2053. stringstream call_str;
  2054. call_str << "call_id=" << this->call_id;
  2055. params.push_back( "appkey=" + string(this->m_szAppKey));
  2056. params.push_back( "method=" + string(method ));
  2057. if( this->has_session )
  2058. {
  2059. params.push_back( "session_key=" + string(this->m_strSession_key ));
  2060. }
  2061. params.push_back( call_str.str( ) );
  2062. params.push_back( "sig=" + this->get_signature( params ) );
  2063. string query = CApiClient::get_param_string( params, true );
  2064. curl_easy_setopt( m_pcurl, CURLOPT_POST, true );
  2065. curl_easy_setopt( m_pcurl, CURLOPT_POSTFIELDS, query.c_str( ) );
  2066. curl_easy_setopt( m_pcurl, CURLOPT_WRITEFUNCTION, CApiClient::write_callback );
  2067.     curl_easy_setopt( m_pcurl, CURLOPT_WRITEDATA, result );
  2068.     
  2069.     this->res = curl_easy_perform( m_pcurl );
  2070.     call_id++;
  2071.     
  2072.     return (this->res == 0);
  2073. }
  2074. // UTF8转GBK
  2075. string CApiClient::UTF8ToGBK(char *strUTF8)
  2076. {
  2077. int len = MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8, -1, NULL, 0);
  2078. WCHAR * wszGBK = new WCHAR[len + 1];
  2079. memset(wszGBK, 0, len * 2 + 2);
  2080. MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8, -1, wszGBK, len);
  2081. len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
  2082. TCHAR  *szGBK = new TCHAR[len + 1];
  2083. memset(szGBK, 0, len + 1);
  2084. WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL);
  2085. string strTemp(szGBK);
  2086. delete[]szGBK;
  2087. delete[]wszGBK;
  2088. return strTemp;
  2089. }
  2090. // GBK转UTF8
  2091. int CApiClient::GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen)
  2092. {
  2093. wchar_t * lpUnicodeStr = NULL;
  2094. int nRetLen = 0;
  2095. if(!lpGBKStr)   return 0;
  2096. //获取转换到Unicode编码后所需要的字符空间长度
  2097. nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,NULL,NULL);  
  2098. //为Unicode字符串空间
  2099. lpUnicodeStr = new WCHAR[nRetLen + 1];  
  2100. //转换到Unicode编码
  2101. nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,lpUnicodeStr,nRetLen);  
  2102. if(!nRetLen)  return 0;
  2103. //获取转换到UTF8编码后所需要的字符空间长度
  2104. nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL);  
  2105. if(!lpUTF8Str)
  2106. {
  2107. if(lpUnicodeStr) delete []lpUnicodeStr;
  2108. return nRetLen;
  2109. }
  2110. if(nUTF8StrLen < nRetLen)  //如果输出缓冲区长度不够则退出
  2111. {
  2112. if(lpUnicodeStr)  delete []lpUnicodeStr;
  2113. return 0;
  2114. }
  2115. //转换到UTF8编码
  2116. nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,(char *)lpUTF8Str,nUTF8StrLen,NULL,NULL);  
  2117. if(lpUnicodeStr)
  2118. delete []lpUnicodeStr;
  2119. return nRetLen;
  2120. }
  2121. //删除csSrc里面的cFiltKey单个字符的信息,返回 csDst
  2122. void CApiClient::filterChar(char * csSrc, char * csDst, char cFiltKey)
  2123. {
  2124. char* pC  =  csSrc;
  2125. char* pCD =  csDst;
  2126. while (*pC)
  2127. {
  2128. if(*pC == cFiltKey)
  2129. {
  2130. pC++;
  2131. }
  2132. else if (*pC == 0x0D || *pC == 0x0A || *pC == 0x20 || *pC == 0x09)
  2133. {
  2134. pC++;
  2135. }
  2136. else
  2137. {
  2138. *pCD++ = *pC++;
  2139. }
  2140. }
  2141. *pCD = '';
  2142. }
  2143. //删除csSrc里面的csFiltKey关键字的"<>  </>"信息,返回 csDst
  2144. void CApiClient::filterString(char * csSrc, char * csDst, char * csFiltKey)
  2145. {
  2146. char* pC  =  csSrc;
  2147. char* pCD =  csDst;
  2148. while (*pC)
  2149. {
  2150. int tt = strlen(csFiltKey);
  2151. if(!memcmp(pC, csFiltKey, tt))
  2152. {
  2153. pC = pC + tt;
  2154. }
  2155. else if (*pC == '<' || (*pC == '<' && *(++pC) == '/') )
  2156. {
  2157. pC++;
  2158. }
  2159. else
  2160. {
  2161. *pCD++ = *pC++;
  2162. }
  2163. }
  2164. *pCD = '';
  2165. }
  2166. //删除csSrc里面所有"<>  </>"信息,返回 csDst
  2167. void CApiClient::filterString2(char * csSrc, char * csDst)
  2168. {
  2169. char* pC  =  csSrc;
  2170. char* pCD =  csDst;
  2171. bool bCopy = false;
  2172. while (*pC)
  2173. {
  2174. if (*pC == '<' || (*pC == '<' && *(++pC) == '/') )
  2175. {
  2176. bCopy = false;
  2177. pC++;
  2178. }
  2179. if (bCopy == true )
  2180. {
  2181. if (*pC == 0x0D || *pC == 0x0A || *pC == 0x20 || *pC == 0x09)
  2182. {
  2183. ;
  2184. }
  2185. else
  2186. *pCD++ = *pC;
  2187. }
  2188. if(*pC == '>')
  2189. {
  2190. bCopy = true;
  2191. }
  2192. pC++;
  2193. }
  2194. *pCD = '';
  2195. }
  2196. //构造其他参数
  2197. void CApiClient::StructureParams(list<string>& lstParams)
  2198. {
  2199. string strVar;
  2200. //////////////////////////////////////////////////////////////////////////
  2201. // timestamp=32432
  2202. int  nTimeValue = GetTickCount();
  2203. CTime time = CTime::GetCurrentTime();
  2204. CString csStartTime = time.Format("%Y-%m-%d %H:%M:%S");
  2205. strVar =  string("timestamp=") + string(csStartTime);
  2206. lstParams.push_back(strVar);
  2207. //////////////////////////////////////////////////////////////////////////
  2208. // sessionkey=sdfsdf
  2209. strVar =  string("sessionkey=sdfsdf");
  2210. lstParams.push_back(strVar);
  2211. //////////////////////////////////////////////////////////////////////////
  2212. // appkey=kasdfas
  2213. strVar =  string("appkey=") + string(this->m_szAppKey);
  2214. lstParams.push_back(strVar);
  2215. //////////////////////////////////////////////////////////////////////////
  2216. // v=1.0
  2217. strVar =  string("v=") + string("1.0");
  2218. lstParams.push_back(strVar);
  2219. //////////////////////////////////////////////////////////////////////////
  2220. // format=json
  2221. if (m_szFormat)
  2222. {
  2223. strVar =  string("format=") + string(m_szFormat);
  2224. }
  2225. else
  2226. {
  2227. strVar =  string("format=") + string("json");
  2228. }
  2229. lstParams.push_back(strVar);
  2230. //////////////////////////////////////////////////////////////////////////
  2231. // sig=ADF578909
  2232. lstParams.push_back( "sig=" + this->get_signature( lstParams ) );
  2233. }