afors Опубликовано 19 июня, 2017 Поделиться Опубликовано 19 июня, 2017 Всем привет! Пытаюсь отправлять 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 Модераторы Andrey Efimov Опубликовано 19 июня, 2017 Модераторы Поделиться Опубликовано 19 июня, 2017 Уже давно замечены проблемы Indy с SSL на Android, вроде как, даже сама Idera рекомендовала (пруф не дам, т.к. не помню где видел это) использовать новые TNetHTTPClient и TNetHTTPRequest. Попробуйте использовать эти компоненты, с SSL работать умеют и асинхронные запросы умеют (т.е. не придётся создавать отдельный поток, достаточно изменить свойство компонента), и ещё куча всего. Основная справка с примерами тут: Using an HTTP Client Равиль Зарипов (ZuBy) 1 Цитата Ссылка на комментарий
0 afors Опубликовано 19 июня, 2017 Автор Поделиться Опубликовано 19 июня, 2017 Спасибо, буду знакомиться с TNetHTTPClient и TNetHTTPRequest. А пока изменил HTTPS на HTTP: fMain.IdHTTP1.Post('http://android.googleapis.com/gcm/send', AData, AResponseContent); На Android 6 заработало. Только не знаю чем это грозит... Цитата Ссылка на комментарий
0 krapotkin Опубликовано 19 июня, 2017 Поделиться Опубликовано 19 июня, 2017 грозит тем что httpS работать не будет Цитата Ссылка на комментарий
Вопрос
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)
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.