RestObjectF.cpp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. //#include <iostream>
  4. #include <DBXJSON.hpp>
  5. #include "IdBaseComponent.hpp"
  6. #include "IdComponent.hpp"
  7. #include "IdHTTP.hpp"
  8. #include "IdTCPClient.hpp"
  9. #include "IdTCPConnection.hpp"
  10. //#include "IdIcmpClient.hpp"
  11. //#include "IdRawBase.hpp"
  12. //#include "IdRawClient.hpp"
  13. //#include "IdAuthenticationDigest.hpp"
  14. #pragma hdrstop
  15. //#include "McJSON.hpp"
  16. //https://github.com/hydrobyte/McJSON
  17. //https://github.com/fabriciocolombo/delphi-rest-client-api
  18. #include "RestObjectF.h"
  19. //---------------------------------------------------------------------------
  20. #pragma package(smart_init)
  21. TRestData::TRestData()
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25. TRestData::~TRestData()
  26. {
  27. }
  28. //---------------------------------------------------------------------------
  29. TRestObject::TRestObject()
  30. {
  31. }
  32. //---------------------------------------------------------------------------
  33. TRestObject::~TRestObject()
  34. {
  35. }
  36. //---------------------------------------------------------------------------
  37. TRestObjectList::TRestObjectList()
  38. {
  39. }
  40. //---------------------------------------------------------------------------
  41. TRestObjectList::~TRestObjectList()
  42. {
  43. }
  44. //---------------------------------------------------------------------------
  45. //---------------------------------------------------------------------------
  46. //TRestObjectManager *ObjCtlrManager = NULL;
  47. //---------------------------------------------------------------------------
  48. TRestObjectManager::TRestObjectManager()
  49. {
  50. }
  51. //---------------------------------------------------------------------------
  52. TRestObjectManager::~TRestObjectManager()
  53. {
  54. }
  55. //---------------------------------------------------------------------------
  56. String TRestObjectManager::Get(String AApiUrl, TForm *AParent)
  57. {
  58. //S := TIdURI.URLEncode(str);
  59. String result = "";
  60. TIdHTTP *IdHTTP1 = new TIdHTTP(NULL);
  61. TMemoryStream *stream = new TMemoryStream();
  62. TMemo *memo = new TMemo(AParent);
  63. try {
  64. try {
  65. memo->Visible = false;
  66. memo->Parent = AParent;
  67. IdHTTP1->Request->Clear();
  68. IdHTTP1->Request->BasicAuthentication = false;
  69. IdHTTP1->Request->ContentType = "application/json; charset=utf8";
  70. IdHTTP1->Request->Accept = "application/json; charset=utf8";
  71. IdHTTP1->Request->CharSet = "utf-8";
  72. //IdHTTP1->Request->ContentEncoding = "utf-8";
  73. IdHTTP1->ReadTimeout = 20000;
  74. IdHTTP1->AllowCookies = false;
  75. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  76. //IdHTTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
  77. //result = IdHTTP1->Get(AApiUrl);
  78. //return result;
  79. IdHTTP1->Get(AApiUrl, stream);
  80. stream->Position = 0;
  81. memo->Lines->BeginUpdate();
  82. memo->Lines->LoadFromStream(stream, TEncoding::UTF8);
  83. memo->Lines->EndUpdate();
  84. result = memo->Text.Trim();
  85. IdHTTP1->Disconnect();
  86. IdHTTP1->IOHandler->InputBuffer->Clear();
  87. } catch(Exception &e) {
  88. }
  89. } __finally {
  90. if (IdHTTP1) delete IdHTTP1;
  91. if (stream) delete stream;
  92. if (memo) delete memo;
  93. }
  94. return result;
  95. //RawByteString rbstr = (char*)(urlStream->Memory);
  96. //if (Pos("utf-8", IdHTTP1->Response->ContentType)==0 && (Pos("charset=utf-8", rbstr)==0))
  97. // SetCodePage(rbstr, 949, false);
  98. //else
  99. //SetCodePage(rbstr, 65001, false);
  100. //String sResult = rbstr;
  101. }
  102. //---------------------------------------------------------------------------
  103. TStream* TRestObjectManager::GetStream(String AApiUrl)
  104. {
  105. String result = "";
  106. TIdHTTP *IdHTTP1 = new TIdHTTP(NULL);
  107. TMemoryStream *stream = new TMemoryStream();
  108. try {
  109. try {
  110. IdHTTP1->Request->Clear();
  111. IdHTTP1->Request->BasicAuthentication = false;
  112. IdHTTP1->Request->ContentType = "application/json; charset=utf8";
  113. IdHTTP1->Request->Accept = "application/json; charset=utf8";
  114. IdHTTP1->Request->CharSet = "utf-8";
  115. //IdHTTP1->Request->ContentEncoding = "utf-8";
  116. IdHTTP1->ReadTimeout = 20000;
  117. IdHTTP1->AllowCookies = false;
  118. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  119. //IdHTTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
  120. //result = IdHTTP1->Get(AApiUrl);
  121. //return result;
  122. IdHTTP1->Get(AApiUrl, stream);
  123. stream->Position = 0;
  124. IdHTTP1->Disconnect();
  125. IdHTTP1->IOHandler->InputBuffer->Clear();
  126. } catch(Exception &e) {
  127. }
  128. } __finally {
  129. if (IdHTTP1) delete IdHTTP1;
  130. }
  131. return stream;
  132. //RawByteString rbstr = (char*)(urlStream->Memory);
  133. //if (Pos("utf-8", IdHTTP1->Response->ContentType)==0 && (Pos("charset=utf-8", rbstr)==0))
  134. // SetCodePage(rbstr, 949, false);
  135. //else
  136. //SetCodePage(rbstr, 65001, false);
  137. //String sResult = rbstr;
  138. }
  139. //---------------------------------------------------------------------------
  140. #if 0
  141. void TRestObjectManager::IdHTTPAuthorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled)
  142. {
  143. #if 0
  144. IdHTTP2->Request->Username = FStrmUser;
  145. IdHTTP2->Request->Password = FStrmPswd;
  146. #endif
  147. Authentication->Username = "";
  148. Authentication->Password = "";
  149. //TIdDigestAuthentication *pAuth1 = (TIdDigestAuthentication*)IdHTTP1->Request->Authentication;
  150. //TIdDigestAuthentication *pAuth2 = (TIdDigestAuthentication*)Authentication;
  151. //pAuth1->Uri = IdHTTP1->Request->URL;
  152. //pAuth2->Method = "GET";
  153. Handled = true;
  154. }
  155. //---------------------------------------------------------------------------
  156. #endif
  157. bool TRestObjectManager::RequestPost(String AApiUrl, String AJsonData, String &AResult)
  158. {
  159. bool result = true;
  160. TIdHTTP *IdHTTP1 = new TIdHTTP(NULL);
  161. TStringStream *request = new TStringStream(AJsonData, TEncoding::UTF8, false);
  162. TMemoryStream *response = new TMemoryStream();
  163. AResult = "";
  164. try {
  165. try {
  166. IdHTTP1->Request->Clear();
  167. //IdHTTP1->Request->BasicAuthentication = false;
  168. IdHTTP1->Request->ContentType = "application/json; charset=utf8";
  169. IdHTTP1->Request->Accept = "application/json; charset=utf8";
  170. IdHTTP1->Request->CharSet = "utf-8";
  171. //IdHTTP1->Request->ContentEncoding = "utf-8";
  172. IdHTTP1->ConnectTimeout = 5000;
  173. IdHTTP1->ReadTimeout = 20000;
  174. IdHTTP1->AllowCookies = false;
  175. //IdHTTP1->Request->CustomHeaders->Add('Authorization: Bearer ' + sToken);
  176. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  177. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoForceEncodeParams;
  178. request->Position = 0;
  179. IdHTTP1->Response->KeepAlive = false;
  180. IdHTTP1->Response->ContentType = "application/json; charset=utf8";
  181. IdHTTP1->Response->CharSet = "utf-8";
  182. //IdHTTP1->Response->ContentEncoding = "utf-8";
  183. IdHTTP1->Post(AApiUrl, request, response);
  184. IdHTTP1->Disconnect();
  185. IdHTTP1->IOHandler->InputBuffer->Clear();
  186. RawByteString rbstr;
  187. rbstr.SetLength(response->Size);
  188. strncpy(rbstr.c_str(), (char *)(response->Memory), response->Size);
  189. if(Pos("utf-8", IdHTTP1->Response->ContentType)==0)
  190. SetCodePage(rbstr, 949, false);
  191. else
  192. SetCodePage(rbstr, 65001, false);
  193. AResult = rbstr;
  194. TMcJsonItem *Json = new TMcJsonItem();
  195. Json->AsJSON = AResult;
  196. //Json->LoadFromStream(response, true);
  197. if (Json == NULL) {
  198. return 0;
  199. }
  200. for (int ii = 0; ii < Json->Count; ii++) {
  201. String key = Json->Items[ii]->Key;
  202. if (key == "error") {
  203. AResult = Json->Items[ii]->Value;
  204. break;
  205. }
  206. }
  207. delete Json;
  208. //AResult = Json->AsString;
  209. } catch(EIdHTTPProtocolException &e1) {
  210. result = false;
  211. #if 0
  212. String sErrMsg = e1.ErrorMessage;
  213. TMcJsonItem *errJson = NULL;
  214. try {
  215. try {
  216. TMcJsonItem *errJson = new TMcJsonItem();
  217. errJson->AsJSON = e1.ErrorMessage;
  218. } catch(Exception &e) {
  219. }
  220. } __finally {
  221. if (errJson) delete errJson;
  222. }
  223. Application->MessageBox(e1.ErrorMessage.c_str(), L"작업 중 오류 발생.", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  224. TStringStream *errStream = new TStringStream(e1.ErrorMessage, TEncoding::UTF8, false);
  225. RawByteString rbstr = (char*)(AnsiString(e1.ErrorMessage).c_str());
  226. SetCodePage(rbstr, 949, false);
  227. String sResult = rbstr;
  228. Application->MessageBox(sResult.c_str(), L"작업 중 오류 발생.", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  229. #endif
  230. String errMsg;
  231. switch(e1.ErrorCode) {
  232. case 400:
  233. errMsg = "요청 데이터가 유효하지 않습니다.";
  234. break;
  235. case 404:
  236. errMsg = "데이터를 찾을 수 없습니다.";
  237. break;
  238. case 417:
  239. errMsg = "작업 중 오류가 발생 하였습니다.";
  240. break;
  241. default:
  242. errMsg = "작업 중 알 수 없는 오류가 발생 하였습니다.";
  243. break;
  244. }
  245. errMsg = e1.Message + "\r\n" + errMsg;
  246. Application->MessageBox(errMsg.c_str(), L"작업 중 오류 발생.", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  247. } catch(Exception &e) {
  248. result = false;
  249. Application->ShowException(&e);
  250. }
  251. } __finally {
  252. if (IdHTTP1) delete IdHTTP1;
  253. if (request) delete request;
  254. if (response) delete response;
  255. }
  256. return result;
  257. }
  258. //---------------------------------------------------------------------------
  259. TMcJsonItem* TRestObjectManager::RequestGet(String AApiUrl)
  260. {
  261. TMcJsonItem *Json = NULL;
  262. TIdHTTP *IdHTTP1 = new TIdHTTP(NULL);
  263. TMemoryStream *stream = new TMemoryStream();
  264. try {
  265. try {
  266. IdHTTP1->Request->Clear();
  267. IdHTTP1->Request->BasicAuthentication = false;
  268. IdHTTP1->Request->ContentType = "application/json; charset=utf8";
  269. IdHTTP1->Request->Accept = "application/json; charset=utf8";
  270. IdHTTP1->Request->CharSet = "utf-8";
  271. //IdHTTP1->Request->ContentEncoding = "utf-8";
  272. IdHTTP1->ConnectTimeout = 5000;
  273. IdHTTP1->ReadTimeout = 20000;
  274. IdHTTP1->AllowCookies = false;
  275. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  276. //IdHTTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
  277. //result = IdHTTP1->Get(AApiUrl);
  278. //return result;
  279. IdHTTP1->Response->KeepAlive = false;
  280. IdHTTP1->Get(AApiUrl, stream);
  281. stream->Position = 0;
  282. IdHTTP1->Disconnect();
  283. IdHTTP1->IOHandler->InputBuffer->Clear();
  284. Json = new TMcJsonItem();
  285. Json->LoadFromStream(stream, true);
  286. } catch(Exception &e) {
  287. }
  288. } __finally {
  289. if (IdHTTP1) delete IdHTTP1;
  290. if (stream) delete stream;
  291. }
  292. return Json;
  293. }
  294. //---------------------------------------------------------------------------
  295. TMcJsonItem* TRestObjectManager::ParseJsonString(String AJsonData)
  296. {
  297. String AData = AJsonData.Trim();
  298. TMcJsonItem *Json = new TMcJsonItem();
  299. try {
  300. Json->AsJSON = AData;
  301. } catch(Exception &e) {
  302. }
  303. return Json;
  304. }
  305. //---------------------------------------------------------------------------
  306. TMcJsonItem* TRestObjectManager::ParseJsonStream(TStream *AStream)
  307. {
  308. TMcJsonItem *Json = new TMcJsonItem();
  309. try {
  310. Json->LoadFromStream(AStream, true);
  311. } catch(Exception &e) {
  312. }
  313. return Json;
  314. }
  315. //---------------------------------------------------------------------------
  316. String TRestObjectManager::GetValue(TMcJsonItem *AItem, String AKey)
  317. {
  318. String result = "";
  319. if (AItem) {
  320. TMcJsonItem *value = AItem->Values[AKey];
  321. if (value) {
  322. result = value->AsString;
  323. if (result == "null") result = "";
  324. }
  325. }
  326. return result;
  327. }
  328. //---------------------------------------------------------------------------
  329. #if 0
  330. TJSONArray *jsonArr = NULL;
  331. try {
  332. reMsg->Lines->BeginUpdate();
  333. try {
  334. /*TBytes data;
  335. data.Length = AData.Length();
  336. ZeroMemory(&data[0], data.Length);
  337. CopyMemory(&data[0], AData.c_str(), data.Length);*/
  338. TStringStream *stream = new TStringStream(AData, TEncoding::UTF8);
  339. jsonArr = (TJSONArray*)TJSONObject::ParseJSONValue(TEncoding::UTF8->GetBytes(AData), 0);
  340. jsonArr = (TJSONArray*)TJSONObject::ParseJSONValue(TEncoding::UTF8->GetBytes(AData), 0);
  341. if (!jsonArr) {
  342. reMsg->Lines->Add("*******************************************: ");
  343. reMsg->Lines->Add("JSON Data Reading Failed: ");
  344. reMsg->Lines->Add("*******************************************: ");
  345. return;
  346. }
  347. reMsg->Lines->Add("Objects: " + String(jsonArr->Size()));
  348. reMsg->Lines->Add("*******************************************: ");
  349. cameraNmbr = "";
  350. cameraId = "";
  351. cameraNm = "";
  352. cameraIp = "";
  353. cameraStream = "";
  354. for (int ii = 0; ii < jsonArr->Size(); ii++) {
  355. TJSONObject *jo = (TJSONObject*)jsonArr->Get(ii);
  356. for (int jj = 0; jj < jo->Size(); jj++) {
  357. TJSONPair *obj = jo->Get(jj);
  358. if (obj->JsonString->Value() == CAMERA_NMBR) {
  359. cameraNmbr = obj->JsonValue->Value();
  360. }
  361. else if (obj->JsonString->Value() == CAMERA_ID) {
  362. cameraId = obj->JsonValue->Value();
  363. }
  364. else if (obj->JsonString->Value() == CAMERA_NM) {
  365. cameraNm = obj->JsonValue->Value();
  366. /*
  367. String sStrVal = obj->JsonValue->Value();
  368. reMsg->Lines->Add(TEncoding::Default->GetString(TEncoding::Default->GetBytes(sStrVal)));
  369. reMsg->Lines->Add(TEncoding::UTF8->GetString(TEncoding::UTF8->GetBytes(sStrVal)));
  370. reMsg->Lines->Add(TEncoding::UTF7->GetString(TEncoding::UTF7->GetBytes(sStrVal)));
  371. reMsg->Lines->Add(TEncoding::Unicode->GetString(TEncoding::Unicode->GetBytes(sStrVal)));
  372. reMsg->Lines->Add((TEncoding::UTF8->GetBytes(sStrVal)));
  373. reMsg->Lines->Add((TEncoding::UTF7->GetBytes(sStrVal)));
  374. reMsg->Lines->Add((TEncoding::Unicode->GetBytes(sStrVal)));
  375. */
  376. }
  377. else if (obj->JsonString->Value() == CAMERA_IP) {
  378. cameraIp = obj->JsonValue->Value();
  379. }
  380. else if (obj->JsonString->Value() == CAMERA_STREAM) {
  381. cameraStream = obj->JsonValue->Value();
  382. }
  383. }
  384. reMsg->Lines->Add(cameraNmbr + "," + cameraId + "," + cameraNm + "," + cameraIp + "," + cameraStream);
  385. ObjCtlrManager->SaveCameraInfo(ii+1, cameraNmbr, cameraId, cameraNm, cameraIp, cameraStream, "");
  386. }
  387. } catch(Exception &e) {
  388. }
  389. } __finally {
  390. if (jsonArr) jsonArr->Free();
  391. reMsg->Lines->EndUpdate();
  392. }
  393. #endif
  394. #if 0
  395. reMsg->Lines->BeginUpdate();
  396. AData = StringReplace(AData, "[", "", TReplaceFlags() << rfReplaceAll);
  397. AData = StringReplace(AData, "]", "", TReplaceFlags() << rfReplaceAll);
  398. AData = StringReplace(AData, "},", "}", TReplaceFlags() << rfReplaceAll);
  399. //AData = StringReplace(AData, "{", "", TReplaceFlags() << rfReplaceAll);
  400. TStringList *pStringList = new TStringList;
  401. try {
  402. pStringList->Delimiter = '}';
  403. pStringList->StrictDelimiter = true;
  404. pStringList->DelimitedText = AData;
  405. for (int ii = 0; ii < pStringList->Count; ii++) {
  406. //reMsg->Lines->Add("*******************************************: " + String(ii+1));
  407. //reMsg->Lines->Add(pStringList->Strings[ii]);
  408. }
  409. } __finally {
  410. if (pStringList) delete pStringList;
  411. }
  412. reMsg->Lines->EndUpdate();
  413. //return;
  414. #endif
  415. //String sFileName = "C:\\UTF8FileName.xml";
  416. //Memo1->Lines->LoadFromFile(sFileName, TEncoding::UTF8);
  417. //reMsg->Lines->Clear();
  418. //reMsg->Lines->Add(AData);
  419. //String((char *)pMemoryStream->Memory, pMemoryStream->Size);
  420. #include <OleAuto.h>
  421. char* UTF8ToANSI(const char *pszCode)
  422. {
  423. BSTR bstrWide;
  424. char* pszAnsi;
  425. int nLength;
  426. // Get nLength of the Wide Char buffer
  427. nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1,
  428. NULL, NULL);
  429. bstrWide = SysAllocStringLen(NULL, nLength);
  430. // Change UTF-8 to Unicode (UTF-16)
  431. MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1, bstrWide, nLength);
  432. // Get nLength of the multi byte buffer
  433. nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL);
  434. pszAnsi = new char[nLength];
  435. // Change from unicode to mult byte
  436. WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL);
  437. SysFreeString(bstrWide);
  438. return pszAnsi;
  439. }
  440. AnsiString __fastcall Utf8ToAscii(UTF8String AUtf8)
  441. {
  442. int nLen;
  443. WideString sUtf16;
  444. AnsiString sAscii = "";
  445. nLen = ::MultiByteToWideChar(CP_UTF8, 0, AUtf8.c_str(), AUtf8.Length(), NULL, 0);
  446. sUtf16.SetLength(nLen);
  447. ::MultiByteToWideChar(CP_UTF8, 0, AUtf8.c_str(), AUtf8.Length(), sUtf16.c_bstr(), nLen);
  448. nLen = ::WideCharToMultiByte(CP_ACP, 0, sUtf16.c_bstr(), sUtf16.Length(), NULL, 0, NULL, NULL);
  449. sAscii.SetLength(nLen);
  450. ::WideCharToMultiByte(CP_ACP, 0, sUtf16.c_bstr(), sUtf16.Length(), sAscii.c_str(), nLen, NULL, NULL);
  451. return sAscii;
  452. }
  453. //---------------------------------------------------------------------------
  454. #if 0
  455. TJSONArray *jsonArr = NULL;
  456. try {
  457. reMsg->Lines->BeginUpdate();
  458. try {
  459. //TStringStream *stream = new TStringStream(AData, TEncoding::UTF8);
  460. //jsonArr = (TJSONArray*)TJSONObject::ParseJSONValue(TEncoding::UTF8->GetBytes(AnsiString(AData)), 0);
  461. jsonArr = (TJSONArray*)TJSONObject::ParseJSONValue(BytesOf(AData), 0);
  462. //jsonArr = (TJSONArray*)TJSONObject::ParseJSONValue(stream->DataString, 0);
  463. if (!jsonArr) {
  464. reMsg->Lines->Add("*******************************************: ");
  465. reMsg->Lines->Add("JSON Data Reading Failed: ");
  466. reMsg->Lines->Add("*******************************************: ");
  467. return;
  468. }
  469. reMsg->Lines->Add("Objects: " + String(jsonArr->Size()));
  470. reMsg->Lines->Add("*******************************************: ");
  471. cameraNmbr = "";
  472. cameraId = "";
  473. cameraNm = "";
  474. cameraIp = "";
  475. cameraStream = "";
  476. for (int ii = 0; ii < jsonArr->Size(); ii++) {
  477. TJSONObject *jo = (TJSONObject*)jsonArr->Get(ii);
  478. for (int jj = 0; jj < jo->Size(); jj++) {
  479. TJSONPair *obj = jo->Get(jj);
  480. if (obj->JsonString->Value() == CAMERA_NMBR) {
  481. cameraNmbr = obj->JsonValue->Value();
  482. }
  483. else if (obj->JsonString->Value() == CAMERA_ID) {
  484. cameraId = obj->JsonValue->Value();
  485. }
  486. else if (obj->JsonString->Value() == CAMERA_NM) {
  487. cameraNm = obj->JsonValue->Value();
  488. //RawByteString rbstr = (char*)(AnsiString(cameraNm).c_str());
  489. //SetCodePage(rbstr, 949, false);
  490. //cameraNm = rbstr;
  491. //cameraNm= String(UTF8ToANSI(AnsiString(cameraNm).c_str()));
  492. reMsg->Lines->Add(cameraNm);
  493. cameraNm = (UTF8String)(obj->JsonValue->Value()).c_str();
  494. /*
  495. String sStrVal = obj->JsonValue->Value();
  496. reMsg->Lines->Add(TEncoding::Default->GetString(TEncoding::Default->GetBytes(sStrVal)));
  497. reMsg->Lines->Add(TEncoding::UTF8->GetString(TEncoding::UTF8->GetBytes(sStrVal)));
  498. reMsg->Lines->Add(TEncoding::UTF7->GetString(TEncoding::UTF7->GetBytes(sStrVal)));
  499. reMsg->Lines->Add(TEncoding::Unicode->GetString(TEncoding::Unicode->GetBytes(sStrVal)));
  500. reMsg->Lines->Add((TEncoding::UTF8->GetBytes(sStrVal)));
  501. reMsg->Lines->Add((TEncoding::UTF7->GetBytes(sStrVal)));
  502. reMsg->Lines->Add((TEncoding::Unicode->GetBytes(sStrVal)));
  503. */
  504. }
  505. else if (obj->JsonString->Value() == CAMERA_IP) {
  506. cameraIp = obj->JsonValue->Value();
  507. }
  508. else if (obj->JsonString->Value() == CAMERA_STREAM) {
  509. cameraStream = obj->JsonValue->Value();
  510. }
  511. }
  512. reMsg->Lines->Add(cameraNmbr + "," + cameraId + "," + cameraNm + "," + cameraIp + "," + cameraStream);
  513. ObjCtlrManager->SaveCameraInfo(ii+1, cameraNmbr, cameraId, cameraNm, cameraIp, cameraStream, "");
  514. }
  515. } catch(Exception &e) {
  516. }
  517. } __finally {
  518. if (jsonArr) jsonArr->Free();
  519. reMsg->Lines->EndUpdate();
  520. }
  521. #endif