• 0
b_vlad25

Подключение из приложения под Андроид к удаленной БД сайта MySQL в С++ Builder XE

Вопрос

Вообще до этого писал только стандартные приложения на С++ Builder. Сейчас пробую написать приложение под Android. Есть на нашем сайте база клиентов которая постоянно обновляется.В приложении клиент введя свой лицевой счет входит в БД и получает свои данные по задолженности. В обычном приложении с этим нету проблем коннектится через ADO ODBC, а вот под Андроид как лучше и правильнее сделать не знаю. Информацию и компоненты все дают разную. Может есть какие то примеры для образца или литература Заранее спасибо...

Изменено пользователем b_vlad25

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


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

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

  • 0

Неужели никто не отправлял запрос в php на русском?

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


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

все всё отправляли и все работает. иначе бы не было никаких программ.

вы заголовок запроса хоть один заполнили? а там передается, что вы хотите получить, в какой кодировке, примете ли сжатие, иногда логин пароль и еще куча всего

раздел Sending a Request with Custom Headers

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_an_HTTP_Client

 

все что тут написано про TNetHttpClient ,  принципиально доступно и в THttpClient, на базе которого компонент TNetHttpClient и сделан

получаемый response тоже обладает набором заголовков, где написано, что пришло, в какой кодировке и т.д.

Rusland и walexw понравилось это

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
В 01.06.2017 в 14:43, b_vlad25 сказал:

Теперь получилась проблема с отправкой в скрипт запроса с текстом на кирилице.

Из Google Chrome отправляет нормально и ответ нормально приходит, а вот из программы никак не получается.

Все просто. Надо посмотреть на календарь и обнаружить что на дворе 2017 год. Поэтому всякие:

Цитата

mysql_set_charset('cp1251',$link);// твоя кодировка, чтобы сервер тебя  правильно понял

выжечь каленым железом.

Только UTF8 нам друг. И еще больший друг он нам если в php скрипте на это указать в начале файла:

<?php
header('Content-Type: application/json; charset=utf-8');

Вот тогда и браузер и ваше приложение будет знать с чем имеет дело и в какой кодировке работает ваше API.

Вот накидал в блокноте код php серверной части:

<?php
header('Content-Type: application/json; charset=utf-8');

$DBHost = "176.126.167.134";
$DBUser = "mmmmmmmmmm";
$DBPassword = "000000000000";
$DBase = "domofonkg";
$DBTable = "internetshop_users";

if (isset($_GET['id'])) {
	$zapros = $_GET['id'];
} esle {
	exit('{ "status" : "нет параметра запроса"}');
}

$DBLink = mysqli_connect($DBHost, $DBUser, $DBPassword, $DBase);
if (!$DBLink) {
  return("<html><script language='JavaScript'>alert('Ошибка соединения с базой! Пожалуйста попробуйте позже.'),history.go(-1)</script></html>");
}
$zapros = mysqli_real_escape_string($DBLink, $zapros);

$query = "SELECT mail_index, address_of_delivery, fax, country_id, url, phone, company, icq FROM $DBTable WHERE mail_index = $zapros";

if ($DBResult = mysqli_query($DBLink, $query)) {
	$ResultArray = array();
	$Index = 0;
	while($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC);) {
		$ResultArray[$Index] = $row;
		$Index++;	
	}
	$ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
	echo $ResultJSON;
	mysqli_free_result($DBResult);
}
mysqli_close($DBLink);

И да, код выдает результат в JSON, дабы ваше приложение могло его по человечески обработать.

Ingalime понравилось это

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


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

Спасибо! Что то ругается Parse error: syntax error, unexpected '{' здесь

 esle {

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
15 часов назад, b_vlad25 сказал:

Спасибо! Что то ругается Parse error: syntax error, unexpected '{' здесь


 esle {

О, это сложная и трудноуловимая ошибка ;-) Вы на Дельфи как условия пишете? Наверное вот так: if then else? А тут тоже язык программирования, и все конструкции одинаковы. Измените esle на else, и все заработает. Говорил же  что в блокноте быстро накидал, опечатка...

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


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

Спасибо, я то то  даже не смотрел на оператор что буквы не так стоят.

А если запрос делать из браузера http://domofonkg.com/3.php?id=г. Бишкек, ул. Токтогула, д. 191, кв. 5, под. 1, то в JSON  отобразится результат в браузере? . До этого выдавало ошибку json_encode() expects parameter 2 to be long, string given in, заменил JSON_PRETTY_PRINT на 128. теперь выдает [ ] и все

Изменено пользователем b_vlad25

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
33 минуты назад, b_vlad25 сказал:

Спасибо, я то то  даже не смотрел на оператор что буквы не так стоят.

А если запрос делать из браузера http://domofonkg.com/3.php?id=г. Бишкек, ул. Токтогула, д. 191, кв. 5, под. 1, то в JSON  отобразится результат в браузере? . До этого выдавало ошибку json_encode() expects parameter 2 to be long, string given in, заменил JSON_PRETTY_PRINT на 128. теперь выдает [ ] и все

Какая версия php у вас на сервере?

И судя по вашему SQL запросу (WHERE mail_index = $zapros), вы ищете данные по почтовому индексу, откуда тогда "id=г. Бишкек, ул. Токтогула, д. 191, кв. 5, под. 1". Волшебство может и случается, но не в программировании. SQL серверу вы должны дать четкие критерии поиска. Вы точно понимаете что хранится в таблице internetshop_users и как оттуда получить данные?

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
  • Сервер: 176.126.167.134 via TCP/IP
  • Тип сервера: MariaDB
  • Версия сервера: 5.5.32-MariaDB-1~wheezy - mariadb.org binary distribution
  • Версия протокола: 10
  • Кодировка сервера: UTF-8 Unicode (utf8)

Это у меня первый по mail_index, а второй $query = "SELECT mail_index, address_of_delivery, fax, country_id, url, phone, company, icq FROM $DBTable WHERE address_of_delivery = '$zapros'";

Изменено пользователем b_vlad25

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


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

PHP один из самых простых в освоении языков. Обычный интерпретатор, т.е. в большинстве случаев, выполняет код строчка за строчкой. Нет привычной отладки (хотя может и есть в каких то средах, но я программирую на php в редакторе FAR Manager), но вы всегда можете вывести значение переменной функциями echo($Переменная) , print_r($Массив) и он высыпет все вам на экран (или в консоль).

Запускать скрипт php можно двумя способами

  1. Запуск в контексте веб-сервера: Вы обращаетесь к веб серверу по адресу http://www.мойсайт.ru/мой_скрипт.php - веб сервер запускает исполняемый файл php и скармливает ему ваш скрипт и параметы переданные в запросе (Get, post). Эти параметры можно получить из специальных массивов $_GET и $_POST.
  2. Запуск ручками: для отладки и всякого другого, вы можете запустить ваш скрипт в консоли (коммандной строке) под любой платформой (линукс, винда...):  " php /home/test001.php". 

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

По теме - если у вас выводит [], то значит узнать что у вас не так:

Выясните сколько строк возвращает запрос к sql серверу echo "Кол-во строк=".mysqli_num_rows($DBResult);

Выводите построчно массивы c строками из запроса print_r($row); echo "<br/>\n"; 

"<br/>\n" - это печатам для перевода на новую строку в браузере или консоли, чтоб не было каши.

Ну и так далее... Любая непонятная функция, становится понятной вот так: в браузере, в адресной строке печатаем php mysqli_real_escape_string, и увидите хорошее описание с примерами на родном для вас языке

Равиль Зарипов (ZuBy) и mazayhin понравилось это

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
[{"mail_index":"000001","address_of_delivery":"?. ??????, ??. ?????????, ?. 191, ??. 5, ???. 1","fax":"????????+","country_id":"35","url":"0","phone":"0","company":"?????????","icq":"2014-10-14"}]

Можно ли отображать только данные без заголовков? Кириллица кстати из таблицы не отображается.

И как быть с запросом на кириллице. В таблице есть текст на кириллице и нужно искать по нему.

Изменено пользователем b_vlad25

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


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу