Перейти к содержанию
  • Регистрация

Dmitry Stolyarov

Пользователи
  • Публикаций

    49
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Dmitry Stolyarov стал победителем дня 22 августа 2018

Dmitry Stolyarov имел наиболее популярный контент!

Информация о Dmitry Stolyarov

  • Звание
    Продвинутый пользователь

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. вроде работает, но за код php не уверен, что так правильно..
  2. Dmitry Stolyarov

    Передача и прием JSON в PHP

    Подскажите, пжл, правильно ли принимаю на сервере JSON или нет. код вроде рабочий, но сомнения есть (т.к. опыта с PHP нет) формирую json и передаю его на сервер: procedure TfmNewGroup.Button1Click(Sender: TObject); var JSON: ISuperObject; Arr: ISuperArray; str: string; begin JSON:=TSuperObject.Create(); JSON.I['lessongrid_idpartner'] := 2; JSON.I['lessongrid_type'] := cbDirect.ListItems[cbDirect.ItemIndex].Tag; JSON.I['lessongrid_idpointcity'] := cbPoint.ListItems[cbPoint.ItemIndex].Tag;; JSON.I['lessongrid_iddircourses'] := cbDirCourse.ListItems[cbDirCourse.ItemIndex].Tag; JSON.I['lessongrid_idteacher'] := cbTeacher.ListItems[cbTeacher.ItemIndex].Tag; Arr:=TSuperArray.Create(); Arr.Add(FormatDateTime('t',tedSun.Time)); Arr.Add(FormatDateTime('t',tedM.Time)); Arr.Add(FormatDateTime('t',tedT.Time)); Arr.Add(FormatDateTime('t',tedW.Time)); Arr.Add(FormatDateTime('t',tedTh.Time)); Arr.Add(FormatDateTime('t',tedF.Time)); Arr.Add(FormatDateTime('t',tedS.Time)); JSON.A['schedule']:=arr; str:=JSON.AsJSON(); PostURL('http://is.sitename.ru/Ins.php',str); end; function PostURL(const aurl, json: string): string; var HTTPClient : THTTPClient; HttpResponse: IHttpResponse; JsonToSend: TStringStream; begin result:= ''; HTTPClient:= THTTPClient.Create; JsonToSend := TStringStream.Create(Json); with HTTPClient do try try if (Head('https://google.com').StatusCode < 400) then HttpResponse := Post(aurl,JsonToSend); Result := HttpResponse.ContentAsString(); except on E: exception do ShowMessage('Ошибка сети: '+E.Message); end; finally FreeAndNil(HTTPClient); FreeAndNil(JsonToSend); end; end; сформированный json: {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} на сервере принимаю: <?php $s = file_get_contents("php://input", "r"); $obj=json_decode($s); echo $obj->schedule[2]; //так обращаюсь к массиву echo $obj->lessongrid_type; // так обращаюсь к конкретному параметру в JSon ?>
  3. В ранее приложенном проекте код как у Евгений (KeeperWorld). В итоге я сделал так: procedure TForm1.Button2Click(Sender: TObject); var xJS, xObj: ISuperObject; vItemList, iHeader: TListViewItem; aJSON, URL: string; j: integer; begin ... with xJS.A['data'] do begin for j := 0 to length - 1 do begin xObj := O[j]; vItemList:= aLV.Items.Add; with vItemList do begin Text := ...; Data['sign_URL'] := 'http://is.kidscoders.ru/'+xObj.S['students_photo']; Data['sign_Loaded'] := 0; end; end; end; end; procedure TForm1.LoadBitmapFromURL(const AURL: string; aBitmap: TBitmap); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; HttpResponse: IHttpResponse; Result: TMemoryStream; ResourceStream: TResourceStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HttpResponse:= HTTP.Get(AURL, Result); if (HTTPResponse.StatusCode <> 200) then //если нет изображения на сервере, то default img begin ResourceStream := TResourceStream.Create(hInstance, 'PngImage_1', RT_RCDATA); ResourceStream.Position := 0; Result.LoadFromStream(ResourceStream); FreeAndNil(ResourceStream); end; TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); end; FreeAndNil(aSourceBmp); end); except FreeAndNil(Result); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; procedure TForm1.aLVUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin if AItem.Data['sign_Loaded'].AsInteger = 0 then begin AItem.Data['sign_Loaded'] := 1; LoadBitmapFromURL(AItem.Data['sign_URL'].AsString, AItem.Bitmap); end; end;
  4. собрал в отдельный проект с указанным кодом и в итоге совсем картинки не грузятся... Projects.rar
  5. FAsyncResultList.Items[K] := FHTTPClient.BeginGet(... странно, на этой строчке получаю ошибку "arguments out of range"
  6. krapotkin, спасибо! Публикую, может кому-то пригодится.. на стороне PHP: $query1 = "SELECT ... FROM `...`;"; $query2 = "SELECT ... FROM `...`;"; $query3 = "SELECT ... FROM `...`;"; $query4 = "SELECT ... FROM `...`;"; function GetValuesAsJson($query, $Link) { if ($DBResult = mysqli_query($Link, $query)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)) { $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); return $ResultJSON; mysqli_free_result($DBResult); } }; echo '{"Arr1":'. GetValuesAsJson($query1, $DBLink).', "Arr2":'.GetValuesAsJson($query2, $DBLink).', "Arr3":'.GetValuesAsJson($query3, $DBLink).', "Arr4":'.GetValuesAsJson($query4, $DBLink).'}'; mysqli_close($DBLink); на стороне delphi: xJS := SO(aJSON); with xJS.A['Arr1'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; Memo1.Lines.Add(xObj.S['cities_name']); // собираем нужные данные ... end;
  7. не исключаю ошибки в формировании JSON.. (опыта нет) сам php: if ($DBResult = mysqli_query($DBLink, $query2)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } if ($DBResult = mysqli_query($DBLink, $query3)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } if ($DBResult = mysqli_query($DBLink, $query4)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } на выходе дает указанный выше формат
  8. Подскажите, пжл, ка разобрать такой JSON: [ { "cities_id": "1", "cities_idpartner": "2", "cities_name": "москва" }, { "cities_id": "2", "cities_idpartner": "2", "cities_name": "москва2" } ][ { "prices_id": "1", "prices_name": "полный прайс", "prices_idpartner": "2", "prices_rub": "1000.00" }, { "prices_id": "2", "prices_name": "многодетные", "prices_idpartner": "2", "prices_rub": "750.00" } ][ ... несколько подобных запрос с разных таблиц в одном JSON
  9. Выйти, вышла.. хотел триалку поставить, ключ получил, но при регистрации ключа - нет соединения с сервером регистрации. Саппорт молчит. Кто-нибудь поставил себе триалку?
  10. блин, быстрее бы ее выпустили..., а то с этой Mojave подстава.. обновился и приехали..
  11. интересно а поддержка OSX Mojave будет (SDK 10.14) ?? \ Сейчас невозможно откомпилировать под OSX Mojave...
×
×
  • Создать...