Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2017, 23:53   #1
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию Разбор JSON и Synapse

Нужно сделать запрос через Synapse и разобрать json в ответе. Вот код:

Код:
procedure TForm1.checkBtnClick(Sender: TObject);
var
  client: THTTPSend;
  data: TStringStream;
  i: integer;
  json: TJSONObject;
  json_arr: TJSONArray;
begin
  client := THTTPSend.Create;
  data := TStringStream.Create('');
  json := TJSONObject.Create;
  json_arr := TJSONArray.Create;

  outputMemo.Clear;
  resultList.Clear;

  try
    data := TStringStream.Create('');
    data.WriteString('username=test');
    data.WriteString('&password=test');
    data.WriteString('&input_format=json');
    for i := 0 to domainsMemo.Lines.Count - 1 do
      json_arr.AddElement(TJSONObject.Create(TJSONPair.Create('dname', domainsMemo.Lines[i])));
    json.AddPair('domains', json_arr);
    //outputMemo.Text := json.ToString;
    data.WriteString('&input_data=' + EncodeURLElement(json.ToString));
    data.Position := 0;
    client.MimeType := 'application/x-www-form-urlencoded';
    client.Document.LoadFromStream(data);
    if client.HTTPMethod('POST', 'https://api.reg.ru/api/regru2/domain/check') then
    begin
      outputMemo.Lines.LoadFromStream(client.Document);
      json := TJSONObject.ParseJSONValue(MemoryStreamToString(client.Document)) as TJSONObject;
      //..

    end
    else
      MessageDlg(Format('Ошибка: %s (Код: %d)', [client.ResultString, client.ResultCode]), mtError, [mbOk], 0);
  finally
    client.Free;
    data.Free;
    json.Destroy;
  end;
end;

function TForm1.MemoryStreamToString(M: TMemoryStream): string;
begin
  SetString(Result, PChar(M.Memory), M.Size div SizeOf(Char));
end;
Пишет ошибку:
Цитата:
[DCC Error] Unit1.pas(73): E2250 There is no overloaded version of 'ParseJSONValue' that can be called with these arguments
Delphi 2010.
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 18.01.2017, 00:13   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык посмотрите какие параметры этой функции надо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.01.2017, 00:21   #3
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Код:
class function TJSONObject.ParseJSONValue(const Data: TBytes; const Offset: Integer): TJSONValue;
class function TJSONObject.ParseJSONValue(const Data: TBytes; const Offset: Integer; const Count: Integer): TJSONValue;
И как тогда TMemoryStream в TBytes перевести?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 18.01.2017, 09:42   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
И как тогда TMemoryStream в TBytes перевести?
Вы не поверите, но ПРОЧИТАТЬ из него...
p51x вне форума Ответить с цитированием
Старый 18.01.2017, 10:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я бы так попробовал:

Код:
function TForm1.MemoryStreamToTBytes(somestream: TMemoryStream): TBytes;
begin
  SetLength(Result,somestream.size);
  somestream.Read(Result,somestream.size);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Synapse MaximusRS Работа с сетью в Delphi 0 06.06.2016 14:06
Работа с JSON (System.JSON) nibufep Общие вопросы Delphi 3 19.04.2016 18:21
JSON Exception [org.apache.json] spectrum988 Помощь студентам 3 11.12.2015 09:25
JSON (SuperObject) and Synapse(HTTPS) LiteCrew Работа с сетью в Delphi 1 15.02.2015 20:34
Разбор JSON данных AndreyK Общие вопросы Delphi 0 29.10.2010 22:55