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

Отправка содержимого Edit на сервер


R.is

Вопрос

Добрый день господа нужна ваша помощь 

как отправить содержимое Edit-а на сервер? Edit находится в устройстве Android а в качестве сервера может выступить любой приложение на компе и оба они находятся в разных сетях 

подскажите как реализовать это?

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

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

  • 0

В первую очередь определитесь, в каком виде сервер хочет получить содержимое вашего Edit. И хочет ли вообще. :)

Есть как минимум два варианта отправки (по http(s)) - метод GET и метод POST.

 

Anyway - до сервера должна быть возможность достучаться. В общем случае - сервер должен иметь белый статический IP. Если используется только локалка (пусть даже и с разными подсетями) - тут проще.

 

Берете Indy, десктопное приложение будет выступать сервером (idHTTPServer), а мобильное приложение - клиентом (idHTTPClient). Клиент отправляет данные через idHTTPClient1.Get|Post, а сервер в событии приема данных ловит это и обрабатывает.

Изменено пользователем kami
Ссылка на комментарий
  • 0

Кстати, если "приложение на компе" планируется запускать исключительно под Windows, я бы посоветовал остаться на VCL и задействовать mormot-фреймворк, он работает с http-драйвером Windows и я за все время его эксплуатации ни разу не встречал проблем (в отличие от Indy и ICS).

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

В первую очередь определитесь, в каком виде сервер хочет получить содержимое вашего Edit. И хочет ли вообще. :)

Есть как минимум два варианта отправки (по http(s)) - метод GET и метод POST.

 

Anyway - до сервера должна быть возможность достучаться. В общем случае - сервер должен иметь белый статический IP. Если используется только локалка (пусть даже и с разными подсетями) - тут проще.

 

Берете Indy, десктопное приложение будет выступать сервером (idHTTPServer), а мобильное приложение - клиентом (idHTTPClient). Клиент отправляет данные через idHTTPClient1.Get|Post, а сервер в событии приема данных ловит это и обрабатывает.

ну задумка такая в Edit записываются GPS координаты устройства (каждую минуту новые координаты) и надо их отправить на комп чтобы можно было знать где находится устройство только вот не знаю как реализовать 

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

Исходя из того, что вам посоветовали взять за основу сетевого обмена Indy, а вы пытаетесь что-то сделать (судя по всему) на TClient/TServerSocket, т.е. игнорируете сказанное вам - чем сообщество может помочь?

И кстати, "сокеты", если имеются ввиду idTCPClient/ServerSocket работают на Android, насколько я знаю.

Изменено пользователем kami
Ссылка на комментарий
  • 0

см. пост №2

клиент-серверное приложение требует сервер. сервер есть у вас?

на клиенте будет всего 5 строк

h:=TIDHTTP.Create(nil);
try
  h.get('http://www.myserver.com/mypath/myfile.html?edit1=xxx&edit2=yyy');
finally
  h.free;
end;

а сервер можно писать на PHP, Delphi, ASP, JS и еще 100500 вариантов

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

тема "как отправить содержимое Edit-а на сервер" вроде исчерпана

как отправить, разобрались

теперь разбирайтесь, где будет ваш сервер, и на какой платформе его писать

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

Согласен с предыдущим оратором про: см. пост №2.

Если речь идет не про локалку, а то Интернет, то это тоже просто. Покупай (арендуй) хост и виртуальный сервер (на VPS), мой на infobox. Есть кучу других. Регистрируй доменной имя и привязывай. если на серваке белый ip, может и не регистрировать доменное имя, но если поменяешь сервак, а приложение привязано к нему (к ip), то нужно будет перекомпилировать. Поэтому правильнее с доменным именем. далее организыешь как угодно прием. Я обычно поднимаю обычный web сервер и принимаю по php и вставляю в базу данных. Ну на стороне сервера, допиливаешь клиент и достаешь данные. Можно сайт, можно нативно. И далее дело техники....

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

согласен, и конкретная задача решается очень просто

 

сложности наступят при заведении аккаунтов, введении логинов паролей и другой безопасности

просто передать строку на сервер и, например, записать ее в файл - те же 5 строк на сервере ))

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

спасибо вам за ответы просто весь офис надеется на меня у нас социологическая организация и мы проводим разные исследовании вопросники программируются в планшетах (в специальной программе CSPro)  их около 500 шт и нужно отслеживать их чтобы они проводили интервью именно с нужным человеком и в нужном месте а не заполняли сами есть много приложении для этого но у всех есть свои минусы и вот решил сотворить что то своё но пока никаких результатов

буду очень благодарен если кто нибудь объяснит все пошагово или даст ссылку которая поможет

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

тогда вам нужно точно и полно сформулировать задачу вместо "послать edit на сервер"

 

что дальше будет с этими данными?

как будете распространять ваше приложение?

сколько копий приложения будет работать?

разовая работа или постоянная?

срок исполнения?

в общем, чем подробнее, тем лучше

 

тогда получите нормальный развернутый ответ

если я даже приведу вам тут код сервера на PHP который записывает эти данные куда-то, думаю, это не поможет

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

попробуй hostinger.ru для начала. Я написал сервак на php, и все пашет на простых гет запросах. Сделал клиент на делфи, и на телеграмм роботе (python). ФТП пытался раньше сделать, но если у кого медленный интернет, но можно екнуться пока будеш ждать установки соединения. А время отправки гет запросов, на самом медленном соединении не превышает 3-5 сек. Могу привести код на php сервера, который будет принимать и обрабатывать данные гет запроса. Но мой совет: учи php. лишним не будет.

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

в общем задача такая есть приложение firemonkey показывает GPS координаты устройства Android  (бнвляется допустим каждый 5 мин)  и мне надо получать их на комп неважно как это будет главное получить чтобы на компе были координаты там там дальше вставлю их  как нибудь в google maps чтобы следить в режиме реально времени

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

Подразделяем задачу.

Устройство ведь будет не одно, так?

Соответственно, необходимо (простейший путь, но не совсем правильный) помимо координат передавать на сервер еще и какой-нибудь идентификатор, по которому сервер сможет однозначно определить - кто прислал ему координаты.

 

Итого, получаем:

1. Клиентское приложение, содержащее idHTTPClient. По таймеру отправляется GET-запрос с параметрами: идентификатор, Latitude, Longitude. Пример привел krapotkin в посте №8.

2. Сервер, до которого можно достучаться из интернета. Предыдущая компания, в которой я работал, не заморачивалась с доменными именами. Купили белый IP и на своем роутере настроили переадресацию портов: этот порт - на этот компьютер, этот - на другой (или тот же). В любом случае, самое главное условие - до сервера должна быть возможность достучаться "извне". Как это будет сделано - вопрос к системному администратору вашей компании, это его головная боль.

3. Десктопное приложение, которое будет отображать данные на карте. При дальнейшем совершенствовании вы захотите отображать историю (трек движения), применять различные фильтры и т.п. Поэтому лучше сразу разграничить: серверу-серверное, клиенту-клиентское.

 

Алгоритмы простые:

 для клиента в принципе, уже все описано в п.1

 для сервера. Он должен содержать какой-либо компонент, работающий с http. Для обеспечения совместимости разработки - пусть это будет idHTTPServer (хотя я предпочел бы mormot). В Design-time прописываете ему нужный порт, а на событие приема вешаете свой обработчик. Этот обработчик: "выдергивает" из полученного GET-запроса переданные идентификатор, широту и долготу, пишет их (желательно в базу, а не текстовый файл - данных будет ОЧЕНЬ много, вы ведь потом захотите к примеру построить трек движения устройства...).

 десктопный клиент. Пусть он также общается с сервером по http. Бросаете на сервер второй idHTTPServer, назначаете ему другой порт и событие приема. Десктопный клиент (на начальном этапе) будет отправлять только один запрос - "дай мне текущие координаты и имена всех активных устройств". Пусть это будет тоже GET-запрос, без параметров. Сервер в ответ на этот запрос шерстит базу, выдергивает последние данные активных устройств, запихивает их в xml / json / protobuffer / etc. и отправляет десктопному клиенту. Десктопный клиент, получив эти данные, парсит их и запихивает на карту.

 

Самое сложное здесь (с точки зрения более-менее опытного программиста) - видимость сервера. Но, как я и говорил - это забота сисадмина (если он у вас есть).

 

Вроде, все расписал. Остаются только под-задачи: как получить координаты, что писать в обработчиках на сервере, как и где хранить на сервере данные, как их выбрать и куда запихнуть, чтобы отдать десктопному приложению, как распарсить данные на десктопном клиенте и запихнуть их на карту.

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

спасибо за вашу помощь 

да и как вы сказали плашетов много в одном проекте будут участвовать около 25-30 и идентификатор обязателен я думаю что этот вопрос можно решить тем что при отправки координат отправить и google аккаунт планшета 

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

Я не совсем понимаю, зачем так заморачиваться с видимостью компа извне.

По мне - проще так:

1. Зарегисть доменное имя + подключить хостинг (у любого хостинг-провайдера)

2. Подключить базу данных (пусть будет MySQL, т. к. есть у большинства провайдеров). Добавить одну таблицу - (ИдПланшета, Широта, долгота, временнАя метка)

3. На любом языке (пусть будет php, как один из простейших) написать 2 сценария.

   а) Первый - получает GET - параметры, что посылает планшет и тупо добавляет их в таблицу.

   б) Второй - делает 1 запрос  к базе данных, где выбирает последние точки каждого планшета, компонует их в json и выдает их.

4. На планшеты поставить программу (предварительно ее написав))), которая каждые 3 минуты берет свои координаты + Ид и делает запрос к 1-му сценарию.

5. На комп поставить программу (тоже написав), которая каждую минуту делает запрос ко второму сценарию, разбирает полученный json и уже распоряжается координатами как хочет.

 

А еще желательно при отправке с планшета данных о координатах в GET-запрос добавить еще один параметр, типа md5 из координат и ид, а на сервере проверять это. Чтобы хоть как-то обезопаситься.

Изменено пользователем AndreyS
Ссылка на комментарий
  • 0

TTethering в помощь. Здесь где-то была инструкция по использованию и конкретные примеры...

Разве Tethering работает через интернет? Емнип, он способен обнаруживать "коллег" и подключаться только в одной подсети.

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

ничего не знаю за него, но там есть выбор:   интернет, или   блютуз.

 

на разных устройствах не пробовал, но писали про него что он служит для связи устройств.

и для чего тогда эти два режима связи?

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

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

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

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

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

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

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

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

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

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

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