Показать сообщение отдельно
  #1  
Старый 27.12.2015, 23:27
baseqlo baseqlo вне форума
Прохожий
 
Регистрация: 27.12.2015
Сообщения: 1
Версия Delphi: Delphi 2010
Репутация: 10
Восклицание Как отправить JSON через Delphi?

Доброго времени суток друзья! Который день уже мучаюсь с этим Json и Delphi...
В чем суть. Суть в том чтобы отправить на сервер параметры JSON

<code>POST regi HTTP/1.1
Host: blablabla
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Proxy-Connection: keep-alive
Accept: */*
Accept-Language: ru;q=1, en;q=0.9
Accept-Encoding: gzip, deflate

{"car_spoiler":"81231233245","model":"1"}</code>

и получить ответ

<code>{"success":true,"msg":null}</code>


Если же ответ не совпадает с тем что указан выше, то изменять значение model из текстового файла, в котором будут такие значения
<code>1
2
3
4
итд</code>

пока не получит ответ сервера
<code>{"success":true,"msg":null}</code>

А как получит ответ <code>{"success":true,"msg":null}</code> - сохранит результат в текстовый документ.


Вот консольный вариант для Delphi

Код:
program JSONPostExample;

{$APPTYPE CONSOLE}

uses
  IdHTTP, IdGlobal, SysUtils, Classes;

var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody: string;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      RequestBody := TStringStream.Create('{"phone":"89127518330","account":null,"deviceid":null,"devicemodel":"iPad4,1","pincode":"1233","configid":1}',
        TEncoding.UTF8);
      try
        HTTP.Request.Accept := 'application/json';
        HTTP.Request.ContentType := 'application/json';
        ResponseBody := HTTP.Post('https://weborder.taxi434343.ru/taxiclient/2/registerpin',
          RequestBody);
        WriteLn(ResponseBody);
        WriteLn(HTTP.ResponseText);
      finally
        RequestBody.Free;
      end;
    except
      on E: EIdHTTPProtocolException do
      begin
        WriteLn(E.Message);
        WriteLn(E.ErrorMessage);
      end;
      on E: Exception do
      begin
        WriteLn(E.Message);
      end;
    end;
  finally
    HTTP.Free;
  end;
  ReadLn;
  ReportMemoryLeaksOnShutdown := True;
end.
Админ: Пользуемся тегами для оформления кода!

Прошу помочь с дополнением кода. Заранее спасибо!
Ответить с цитированием