• 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.

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

 

 

 

 

 

 

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

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


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

4 ответа на этот вопрос

  • 0

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

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


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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

    • От 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
      Пример ответа сервера
      Можно конечно сделать запрос на онлайн сервис - но как -то это
    • От R.is
      Подскажите пожалуйста как избежать данную проблему, пытаюсь загрузить исходный код страницы IdHTTP1.Get('сайт') а Indy говорит что ее не существует 
      http/1.1 404 not found  
  • Последние посетители   0 пользователей онлайн

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