Перейти к содержанию
  • Регистрация
  • 0
Кирилл

Использование TidHTTP в Android

Вопрос

Добрый день!

Возникла необходимость из программы на Android отправлять запросы на web сервер и получать ответ.

Пробую использовать TidHTTP:

- кинул на форму компонент TidHTTP;

- вызываю:  

procedure TForm1.btSendClick(Sender: TObject);
var
  list: TStringList;
  s: string;
begin
  list := TStringList.Create;
  try
    list.Add('1');
    try
      s := IdHTTP1.Post('http://127.0.0.1', list);
      ShowMessage(s);
    except
      on E: Exception do
        ShowMessage('Error: ' + E.Message);
    end;
  finally
    FreeAndNil(list);
  end;
end;

- в результате программа закрывается. Без всяких сообщений.

Запускал на смартфоне Samsung Galaxy A3 (2016) Android 6.0.1.

В чем может быть проблема?

 

 

 

 

 

 

Изменено пользователем Кирилл

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0

потому что используйте родной THttpClient

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Как вариант - попробуйте поставить последнюю версию Инди - https://indy.fulgan.com , возможно пофиксили фиксики

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


  • Похожий контент

    • От Евгений Корепов
      Для одного своего проекта сделал, поделюсь, вдруг кому пригодится. Тестировал под Windows и Android.
      Для использования просто добавьте BitmapAsyncLoader в uses, а дальше все просто:
      ImageControl.Bitmap.LoadFromURLAsync('https://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg'); Код юнита хелпера:
      unit BitmapAsyncLoader; interface uses FMX.Graphics, System.Net.HttpClient, System.Types, System.Classes; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromUrlAsync(const AUrl : String); end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then TThread.Synchronize(Nil, procedure begin try Self.LoadFromStream(AHTTPResponse.ContentStream); except end; end ); end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then begin AHTTPClient.DisposeOf; end; end. Архив с тестовым проектом прилагаю.
      BitmapAsyncLoader.7z
    • От Mars M
      Есть такой вот код для работы с гугл переводчиком:
      procedure TfrmMain.GTranslate; var Data: TStringList; S: String; begin IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) Gecko/20100625 Firefox/3.6.6'; Data := TStringList.Create; try Data.Text := ('client=x'#13#10 + 'text=' + Edit1.Text + #13#10 + 'hl=en'#13#10 + 'sl=en'#13#10 + 'tl=ru'); try S := (IdHTTP1.Post('http://translate.google.ru/translate_a/t', Data)); except on E: exception do ShowMessage(E.ClassName + ' error raised, with message : ' + E.Message); end; finally Data.Free; end; end; Работает без проблем.
      Переделал его для NetHttpClient, практически один в один и вместо перевода получаю html страницу с гугл капчей.
      Типа такой как получаю если заходить через браузер http://translate.google.ru/translate_a/t?client=x&text=Hello&hl=en&sl=en&tl=ru
      Так в чем между ними разница что получаю разный результат?
      PS: Просто я в проекте и так использую NetHttpClient, хотелось бы на нем и сделать а не плодить кучу однотипных компонентов.
    • От Sashar333
      Здравствуйте! Вопрос такой:
      Есть процедура:
      Если переменные inn,capcha и capchaToken указаны правильно то Idhttp работает как надо, если inn или capcha не верны то прим Idhttp.post программа выдает ошибку:

      а хочется получить данные как в анализаторе:

      Как можно это сделать? 
    • От Rustam Bikeev
      Доброго времени суток уважаемые форумчане, назрел вопрос по компоненту ThttpClient. Я сам слеп в области Http что такое Post, Get  и прочие аббревиатуры для меня страшные и дикие звери которых никогда не видел. Потому и приходится спрашивать у вас. Как отправить на веб сервер запрос для получения текстового файла или картинки. Куда и как принять этот файл. Я нечерта не пойму если вы напишите сделай это сделай то, прошу вас опишите как пользоваться этими 3 функциями 
      THTTPClient.GetRequest
      THTTPClient.Post
      THTTPClient.Get
       
    • От giveaway
      При написании кода под Windows я обычно использую WinNT, чтобы определить, выходит ли пользователь в Интернет через файрвол, а также для проверки сертификата сайта, когда клиент подключается к нему. Чем можно заменить WinNT под Firemonkey, чтобы выполнить эти задачи – проверку наличия файрвола и проверку сертификата сайта? Спасибо.
    • От M1shQa
      И снова я к Вам за советом, господа. Задачка: пользователь кидает телефон в карман и в фоновом режиме программа сама проверяет каждые секунд 15 наличие новой строки в стринглисте, который цепляется с файла и пытается отправить http запрос. Как мне до этого подсказали копать надо в сторону сервисов. Что же, начал: создал сервис, прицепил к приложению, кинул на него таймер и http от indy, написал кучу кода. Как итог - сервис виден в процессах но таймер не срабатывает и ничего не происходит (запускаю приложение, что бы запустить сервис, выхожу из него и жду проверяя данные на сервере). Но происходит совсем ничего. Туда ли я вообще полез или это нужно реализовывать как то иначе? Стоит local сервис, может проблема в этом? Ниже в темах писали что таймер не работает или еще что, при компиляции ничего не ругается, хотя условий там море и т.д. Все данные которые мне нужно отправить цепляются из текстовых файлов и далее в TStringList..  Понятное дело что такой сервис будет жрать батарейку и кучу трафика, но они так и так тратятся пользователем в "ручном" режиме
    • От magicxor
      При простом GET-запросе на эти URL:
      https://accounts.google.com/AddSession?hl=ru&continue=https://www.google.com/%3Fgws_rd%3Dssl
      https://accounts.google.com/Logout?hl=ru&continue=https://www.google.com/%3Fgws_rd%3Dssl&timeStmp=1463418874
      Возникает исключение:
      В инди такой проблемы нет, она отдаёт контент HTML страницы, как и положено.
      Потестить можно через C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\RTL\HttpAsyncDownload
      Это очередной баг?
      (использую Delphi 10.1 Berlin)
    • От AndreyS
      День добрый! Пишу приложение, которое периодически загружает информацию с сайта. Способ простейший - 
      SiteResult := IdHTTP.Get('http://example.com/'); На компе стоит dr. web. Обычно, когда какое-либо приложение пытается получить данные из сети, вываливается стандартное окошко брандмауэра, мол, так и так, данное приложение пытается получить доступ к сети, разрешить, заблокировать или создать для него правило. В моем же случае такого не происходит. Просто при выполнении  указанной строки кода появляется сообщение об ошибке сокета #10013 Access Denied в независимости от указанного адреса (включая localhost). При попытке отправки POST-запроса - та же история. При отключении брандмауэра dr. web все запросы отрабатываются без осложнений)). В чем может быть причина? Может у TidHTTP должны быть определенным способом заполнены какие-то свойства?
    • От mrseagull
      Стоит задача загружать страницу сайта на устройство и ее парсить. На странице сайта стоит счетчик статистики в виде java script'a но при обычной загрузке через idHTTP он не работает и счетчик статистики не увеличивается. Как можно решить такую проблему?
    • От serg557
      Всем приятного времени суток-столкнулся собственно с проблемой при загрузке файла на сервер ответ выдается в кодировке ISO-8859-1, которая в программе естественно не воспринимается.
      TStringList *SL2= new TStringList; SL2->Clear(); OpenDialog1->Execute(); TIdMultiPartFormDataStream *PostFile= new TIdMultiPartFormDataStream; PostFile->Clear(); PostFile->AddFormField("FileName",ExtractFileName(OpenDialog1->FileName)); PostFile->AddFile("Filedata",OpenDialog1->FileName); PostFile->AddFormField("Upload","Submit Query"); SL2->Text=HTTP1->Post("http://...", PostFile); Memo1->Text=SL2->Text; PostFile->Free(); SL2->Free(); HTTP1->Request->ContentType="application/x-www-form-urlencoded"; Отсюда два вопроса: есть ли возможность штатными средствами перекодировать ISO-8859-1 в UTF-8, или как-то изменить кодировку 
      HTTP1->Request->ContentType="multipart/form-data; boundary= --";
      запрос веб-браузера 
      Запрос IdHTTP
      Пример ответа сервера
      Можно конечно сделать запрос на онлайн сервис - но как -то это
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...