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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2019, 12:38   #1
Q15
 
Регистрация: 16.12.2018
Сообщений: 3
По умолчанию json запрос

Здравствуйте. Как отправить json запрос на Delphi?

delphi xe5

Делаю так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 
idHTTP1.Request.CustomHeaders.Add('Connection:keep-alive');
idHTTP1.Request.CustomHeaders.Add('Accept:application/json, text/plain, */*');
idHTTP1.Request.CustomHeaders.Add('Origin:ссылка');
idHTTP1.Request.CustomHeaders.Add('X-API-VERSION:2');
idHTTP1.Request.CustomHeaders.Add('User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36');
idHTTP1.Request.CustomHeaders.Add('Content-Type:application/json;charset=UTF-8');
idHTTP1.Request.CustomHeaders.Add('Referer:ссылка');
idHTTP1.Request.CustomHeaders.Add('Accept-Encoding:gzip, deflate');
idHTTP1.Request.CustomHeaders.Add('Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4');
 
data:=TStringList.Create;
data.Add('ssid_token='+ssid_token);
data.Add('grant_type=password');
data.Add('username=юзернейм');
data.Add('password=пароль');
data.Add('check_ip=False');
data.Add('client_id=web-client');
data.Add('client_secret=клиент секрет');
 
a:=Form1.IdHTTP1.Post('ссылка', data);
Form1.Memo1.Lines.Add(a);
end;
или так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 
idHTTP1.Request.CustomHeaders.Add('Connection:keep-alive');
idHTTP1.Request.CustomHeaders.Add('Accept:application/json, text/plain, */*');
idHTTP1.Request.CustomHeaders.Add('Origin:ссылка');
idHTTP1.Request.CustomHeaders.Add('X-API-VERSION:2');
idHTTP1.Request.CustomHeaders.Add('User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36');
idHTTP1.Request.CustomHeaders.Add('Content-Type:application/json;charset=UTF-8');
idHTTP1.Request.CustomHeaders.Add('Referer:ссылка');
idHTTP1.Request.CustomHeaders.Add('Accept-Encoding:gzip, deflate');
idHTTP1.Request.CustomHeaders.Add('Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4');
 
 
data:=TStringStream.Create;
b:='{"ssid_token":"'+ssid_token+'","grant_type":"password","username":"юзернейм","password":"пароль","check_ip":"False","client_id":"web-client","client_secret":"клиент секрет"}';
data.Write(b, Length(b)*SizeOf(Char));
 
a:=Form1.IdHTTP1.Post('ссылка', data);
Form1.Memo1.Lines.Add(a);
end;
В обоих случаях выдает ошибку 400 bad request
Подскажите, как правильно отправлять json запросы в delphi?

Последний раз редактировалось Q15; 06.04.2019 в 18:09.
Q15 вне форума Ответить с цитированием
Старый 07.04.2019, 06:34   #2
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Код:
function TfOWN.reqestAPI(method, rq: string): string;
var
  http: TIdHTTP;
  iossl: TIdSSLIOHandlerSocketOpenSSL;
  request: TStringStream;
  ot, s: string;
begin
  http := TIdHTTP.Create(nil);
  iossl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  http.IOHandler := iossl;
  http.request.Connection := 'Keep-Alive';
  http.request.ContentType := 'application/x-www-form-urlencoded';
  iossl.SSLOptions.method := sslvSSLv23;
  http.request.CustomHeaders.Add
    ('Authorization: Bearer xxx');
  request := TStringStream.Create;
  request.WriteString(rq);
  try
    ot := http.Post(apiURL + method, request);
  except
    on e: Exception do
    begin
      s := e.Message;
      if Pos('400', s) <> 0 then
      begin
        http.Free;
        iossl.Free;
        request.Free;
      end;
    end;
  end;
  Result := ot;
  http.Free;
  iossl.Free;
  request.Free;
end;
apiURL это константа "https://website.ru/api"
method это метод "parametr/data"
rq содержит параметры в формате json
PTyTb32 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
POST запрос в JSON формате investr777 Java Базы данных (JDBC, JPA, Hibernate) 2 18.12.2018 18:48
Работа с JSON (System.JSON) nibufep Общие вопросы Delphi 3 19.04.2016 18:21
Написать скрипт, который выгрузит данные из файла в формате JSON, создаст SQL таблицу и написать SQL запрос Mangum Фриланс 3 11.03.2016 05:21
Почему на отправляется запрос json? Parallelogram JavaScript, Ajax 3 09.02.2015 16:05
JSON запрос из PHP Crystallon PHP 1 09.08.2013 12:01