Перейти к содержанию
Fire Monkey от А до Я
  • 0

Отправка PUSH сообщений через IdHTTP.Post


afors

Вопрос

Всем привет!

Пытаюсь отправлять PUSH через компонент IdHTTP

//...
//Var ID: Integer;
//...
Procedure SentPush (ServerKey, DeviceToken: String);
// Uses System.JSON
var
  AJson: TJSONObject;
  AJsonData: TJSONObject;
  ARegisterIds:TJSONArray;
  AData, AResponseContent:TSTringStream;

Begin
  ARegisterIds := TJSONArray.Create;
  AJson := TJSONObject.Create;
  try
    ARegisterIds.Add(DeviceToken);

    AJsonData := TJSONObject.Create;
    AJsonData.AddPair('id', ID.ToString());
    ID := ID + 1;

    AJsonData.AddPair('message', 'Привет');

    AJson.AddPair('registration_ids', ARegisterIds);
    AJson.AddPair('data', AJsonData);

    fMain.IdHTTP1.Request.ContentType := 'application/json';
    fMain.IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'key=' + ServerKey);
    AData := TStringStream.Create(AJson.ToString, TEncoding.UTF8);
    AData.Position := 0;
    AResponseContent := TStringStream.Create('', TEncoding.UTF8);

    fMain.IdHTTP1.Post('https://android.googleapis.com/gcm/send', AData, AResponseContent);
    AResponseContent.Position := 0;
    fMain.Memo1.Lines.Add('https://android.googleapis.com/gcm/send' + AJson.ToString);
    fMain.Memo1.Lines.Add(AResponseContent.DataString);
  finally
  end;
End;

Пример взят с 

На Windows работает, Push отправляются и приходят.

Тот же самый код на Android не работает, выдает ошибку: Could not load SSL library

На форумах советуют обновить Indy, подсунуть недостающую библиотеку...

Кто подскажет чем это лечится?

(Delphi 10.1 Berlin Upd2. Android 6)

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

Уже давно замечены проблемы Indy с SSL на Android, вроде как, даже сама Idera рекомендовала (пруф не дам, т.к. не помню где видел это) использовать новые TNetHTTPClient и TNetHTTPRequest.

Попробуйте использовать эти компоненты, с SSL работать умеют и асинхронные запросы умеют (т.е. не придётся создавать отдельный поток, достаточно изменить свойство компонента), и ещё куча всего.

Основная справка с примерами тут: Using an HTTP Client

Ссылка на комментарий
  • 0

Спасибо, буду знакомиться с TNetHTTPClient и TNetHTTPRequest.

А пока изменил HTTPS на HTTP: fMain.IdHTTP1.Post('http://android.googleapis.com/gcm/send', AData, AResponseContent);

На Android 6 заработало. Только не знаю чем это грозит...

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...