powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / получение ответа в сервера в формате JSON
15 сообщений из 15, страница 1 из 1
получение ответа в сервера в формате JSON
    #39946804
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу не судить строго, я только учусь.
Посылаю на сервер запрос, прописав все параметры вручную.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
RESTClient1.BaseURL:= 'https://www.songsterr.com/a/ra/';
RESTRequest1.Params.Clear;
RESTRequest1.Params.Add;
RESTRequest1.Params[0].Kind:=TRESTRequestParameterKind.pkGETorPOST;
RESTRequest1.Params[0].name:= 'pattern';
RESTRequest1.Params[0].Options := [poDoNotEncode]; 
RESTRequest1.Params[0].Value:= 'Madonna';
RESTRequest1.Resource:='song.json';  
RESTRequest1.Method:= rmGET;
RESTRequest1.Execute;
Memo1.Lines.Add(RESTRequest1.Response.Content);
RESTRequest1.Free;
RESTRequest1.Params.Clear;



В Memo1 хочу получить результат запроса в формате JSON
Типа так
Код: html
1.
2.
3.
4.
[{"id":2747,"type":"Song","title":"Lady Madonna","artist":
{"id":19,"type":"Artist","nameWithoutThePrefix":"Beatles","useThePrefix":true,"name":"The Beatles"},
"chordsPresent":true,"tabTypes":["PLAYER","TEXT_GUITAR_TAB","CHORDS","TEXT_BASS_TAB"]},
{"id":22865,"type":"Song","title":"Who's That Girl","artist":



Получаю ошибку "access violation at address 010Aea84 in module 'название'. Read of address 000000A0"

Пример беру из вот этого тутореала
http://docwiki.embarcadero.com/RADStudio/Rio/en/Tutorial:_Using_the_REST_Client_Library_to_Access_REST-based_Web_Services

если делать как сказано на docwiki, все работает.
Но я хочу прописать все ручками, и тоже чтобы все работало.

В чем может быть проблема?
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946805
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНатальяВ чем может быть проблема?

Судя по ошибке - забыли создать какой-то объект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946809
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНаталья,

вот эта последовательность кода точно вызывает ошибку:
Код: pascal
1.
2.
RESTRequest1.Free;
RESTRequest1.Params.Clear;


уберите последнюю строку
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946853
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2, убрала, но ошибка никуда не делась.
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946867
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНаталья, а RESTRequest1 создан к тому моменту, когда вы его используете?
А вообще-то, пошаговая отладка сомнительного кода всегда спасает.
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946875
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45,

час от часу не легче...

добавила

RestRequest.Create(Self)... ошибка "Component named BindSource already exists"
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946885
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНаталья,

если объект RESTRequest1 создается вместе с формой, то ему не надо делать RESTRequest1.Free;

... потому что форма (или дата-модуль, не важно) позже тоже попробуют освободить объект
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946890
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён,

оке, этот момент понятен, спасибо.
Но
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
begin
RESTClient1.BaseURL:= 'https://www.songsterr.com/a/ra/';
RESTRequest1.Resource:='song.json'; 
RESTRequest1.Method:= rmGET; 
RESTRequest1.Params.Add;
RESTRequest1.Params[0].Kind:=TRESTRequestParameterKind.pkGETorPOST;
RESTRequest1.Params[0].name:= 'pattern';
RESTRequest1.Params[0].Options := [poDoNotEncode];  
RESTRequest1.Params[0].Value:= 'Madonna';
RESTRequest1.Execute;

 
Memo1.Lines.Add(RESTRequest1.Response.Content);
RESTRequest1.Params.Clear;

end;



вообще никакой теперь ошибки не выдает, но и мемо не заполняется...

вроде все просто, но я что-то не учитываю, похоже
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946929
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНатальявроде все просто, но я что-то не учитываю, похоже

Пошаговая отладка поможет выяснить что именно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946966
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНаталья,

вот этот ваш код:
Код: pascal
1.
2.
3.
...
RESTRequest1.Execute;
Memo1.Lines.Add(RESTRequest1.Response.Content);



и код из примера , на который вы ссылались сами в первом посте, как то немного по-разному выглядят (смотрите на выделенные розовым куски):

Код: pascal
1.
2.
3.
4.
5.
6.
var
  jValue:TJSONValue;
begin
  RESTRequest1.Execute;
  jValue:=RESTResponse1.JSONValue;
  MemoContent.Text:= jValue.ToString;
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39946987
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён,

Я и так, и так пробовала.

в первом случае я в мемо добавляю ответ с сервер в строковом формате,
а во втором - этот ответ передаю в JSON объект, а потом его привожу с стинг и записываю в мемо.
(возможно, я ошибаюсь)
Ошибка не в этом, скорее всего-то то с памятью, или как-то объект не создала... пример, что по ссылке, у меня работает.

но хотелось бы вручную все прописывать
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39947010
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WНаталья
Я и так, и так пробовала.

ПОШАГОВАЯ ОТЛАДКА!
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39947030
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WНаталья,
опечатка вот тут:
Код: pascal
1.
RESTRequest1.Resource:='song.json';


Должно быть songs.

Вот так вот работает:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.Button1Click(Sender: TObject);
begin
  RESTClient.BaseURL:= 'https://www.songsterr.com/a/ra/';
  RESTRequest.Params.Clear;
  RESTRequest.Params.Add;
  RESTRequest.Resource:='songs.json';
  ////RESTRequest.Params[0].Kind:=TRESTRequestParameterKind.pkGETorPOST;
  RESTRequest.Params[0].name:= 'pattern';
  ////RESTRequest.Params[0].Options := [poDoNotEncode];
  RESTRequest.Params[0].Value:= 'Madonna';

  //RESTRequest.Method:= rmGET;
  RESTRequest.Execute;
  Memo.Lines.Add(RESTRequest.Response.Content);
end;
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39947039
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и по результату запроса:
[youtube=
YouTube Video
...
Рейтинг: 0 / 0
получение ответа в сервера в формате JSON
    #39947307
WНаталья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62, спасибище =) Заработало! Я бываю невнимательной
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / получение ответа в сервера в формате JSON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]