Клиент android сервер php

Клиент android сервер php

В этой статье я продемонстрирую процесс создания PHP XML RPC сервера и покажу, как использовать созданный сервис через Android приложение как клиент. Всё, что касается PHP будет создано на Zend Framework, а для Android мы будем использовать очень маленькую библиотеку XML RPC.

Предположим, что вы уже настроили на своей системе Zend Framework и установили Android SDK (а также эмулятор Android). В этом уроке я буду использовать Eclipse для написания PHP кода и кода для Android. Кроме того, я буду использовать инструмент ZF tool для того, чтобы создать проект, контроллеры и модели.

Итак, начнём с создания серверного компонента XML RPC.
Серверный компонент XML RPC

В корневой папке вашего сервера запустите следующую команду: zf create project xmlrpc-test. В результате выполнения данной строки вы создадите Zend Framework проект.

Теперь мы создадим необходимые контроллеры и модели.

Сперва запустите команду zf create controller Server (что создаст вам ServerController); теперь пришла очередь создания модели: zf create model Data. Поскольку мы также создадим клиентскую часть для XML RPC, то давайте создадим ещё один контроллер специально для этой области действия: zf create controller Client.

Теперь самое время протестировать наш проект. Наберите в адресной строке вашего браузера http://localhost/xmlrpc-test/public; Результат должен совпадать с рисунком, который я выложил ниже.

Теперь мы готовы приступить к нашему проекту в Eclipse. Давайте создадим новый PHP проект File->New->PHP project. В качестве названия введите xmlrpc-test и после этого нажмите кнопку Finish. Наш проект готов, а все файлы созданы на предыдущем шаге.

Теперь давайте откроем контроллер Server (application/controllers/Server.php) и начнем создавать сервер XML RPC.

class ServerController extends Zend_Controller_Action < public function indexAction() < $this->_helper->viewRenderer->setNoRender(); $server = new Zend_XmlRpc_Server(); $server->setClass('Application_Model_Data', 'cf'); echo $server->handle(); > >

Во-первых, мы отключаем наше представление (view). Далее происходит инициализация объекта класса Zend_XmlRpc_Server, который будет отвечать на вызовы клиента. В качестве аргумента передаём название модели Application_Model_Data, и указываем пространство имен как cf (любой набор символов).

Далее мы выводим то, что возвращает нам метод hanle, и вуаля – наш простой XML RPC сервер готов.

Теперь давайте откроем нашу модель (application/models/Data.php) и создадим парочку методов, которые будут возвращать какие-то данные.

class Application_Model_Data < /** * Test method * * @return string */ public function test() < return 'Hello XMLRPC!'; >>

Класс Application_Model_Data представляет собой классический PHP класс. Самой важной частью в коде на данный момент являются комментарии. Указание типа является обязательным условием, так как когда происходит вызов Zend_XmlRpc_Server, в первую очередь будет осуществлена проверка на наличие подобного метода, за которой последует проверка на соответствие параметров (включая тип). Таким образом, мы должны определить типы всех входящих параметров . В этом примере входящих параметров нет, но зато есть возвращаемое значение.

Давайте создадим клиент XML RPC, чтобы проверить, все ли в порядке.
XML RPC клиент

Ранее мы создали класс ClientController (расположенный в application/controller/Client.php); indexAction – это метод, который запускается по умолчанию. Впишем в него следующее содержание:

class ClientController extends Zend_Controller_Action < public function indexAction() < $client = new Zend_XmlRpc_Client('http://localhost/xmlrpc-test/public/server/'); try < $data = $client->call('cf.test'); $this->view->data = $data; > catch (Zend_XmlRpc_Client_HttpException $e) < require_once 'Zend/Exception.php'; throw new Zend_Exception($e); >catch (Zend_XmlRpc_Client_FaultException $e) < require_once 'Zend/Exception.php'; throw new Zend_Exception($e); >> >

Сначала мы инициализируем Zend_XmlRpc_Client и передаём ему URI нашего XML RPC сервера. Затем пытаемся сделать запрос к методу test (‘cf’ — это пространство имен, определенное для нашего класса Application_Model_Data). Далее передаём полученные данные в представление.

Читайте также:  Java show error log

Наше представление расположено в application/views/scripts/client/index.phtml. В этом скрипте мы просто выводим полученные данные.

Via XMLRPC

escape($this->data); ?>

Если мы зайдёте по адресу http://localhost/xmlrpc-test/public/client, то увидите что-то подобное:

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

/** * Fetches data * * @param integer $num * @return array */ public function getData($num) < $data = array(); for ($a = 0; $a < $num; $a++) < $data[] = array( 'title' =>'Codeforest.net', 'number' => $a + 1, 'datetime' => date('Y-m-d H:i:s') ); > return $data; >

Новый метод будет называться getData (не очень креативно), а его содержание не будет слишком сложным. Ещё раз акцентирую ваше внимание на комментарий, в котором мы описываем параметры @param и возвращаемое значение @return.

Теперь мы должны обновить наш класс ClientController, и вместо того, чтобы вызвать метод cf.test, вызовем метод cf.getData. Заменяем:

$data = $client->call('cf.getData’, 15);

Все остальное в классе ClientController остается неизменным.

Далее мы должны обновить представление:

Снова запускаем наш браузер и переходим по адресу http://localhost/xmlrpc-test/public/client. Результат:

На этом мы завершаем часть, посвящённую PHP и Zend Framework.
Клиент Android XM LRPC

Теперь нам следует переключиться на рабочее пространство Android (File->Switch Workspace, pick your Android workspace).

После этого, создадим новый Android проект (File->New->Android Project); Введите название проекта.

Далее нам нужно загрузить клиентскую библиотеку XML RPC Android вот отсюда http://code.google.com/p/android-xmlrpc/.

Далее в нашем проекте создаём новый пакет (правый щелчок мышью по названию проекта в проводнике Пакета, и выберите New->Package). Назовите этот пакет org.xmlrpc.android и скопируйте каталог архива файлов, android-xmlrpc/src/org/xmlrpc/android в только что созданный пакет.

Ваша структура каталогов должна выглядеть подобный образом:

Поскольку для работы программы требуется интернет-соединение (чтобы соединиться с нашим XML RPC сервером), мы должны выставить соответствующие права нашему файлу. Откройте AndroidManifest.xml и добавьте следующую строку в конец документа:
1

В нашем примере мы будем использовать файл, расположенный в res/layout/main.xml. Также мы добавим ID к элементу TextView, чтобы у нас была возможность вносить полученные данные. Откройте файл res/layout/main.xml и определите местоположение элемента TextView. Добавьте атрибут android.id со значением @+id/text_view:

Теперь мы можем начать создавать наш Android клиент. Откройте Client.java в нашем пакете com.cf.xmlrpc и введите следующий код:

public class Client extends Activity < private XMLRPCClient client; private URI uri; @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.main); uri = URI.create("http://10.0.2.2/xmlrpc-test/public/server/"); client = new XMLRPCClient(uri); TextView textView = (TextView) findViewById(R.id.text_view); >>

Во-первых, мы создаем переменные класса, которые будет содержать наш Клиент XMLRPC и URI для нашего сервера.

В методе onCreate мы присваиваем переменную uri объекту URI. Вы наверное заметили, что мы используем адрес 10.0.2.2, чтобы получить доступ к нашему собственному локальному веб-серверу.

Читайте также:  Python convert string dict to dict

Затем мы создаем XMLRPCClient.

Также мы получаем ссылку на элемент TextView, где мы выведем на экран полученные результаты.

Затем создадим метод, который вызовет функцию test на нашем XML RPC сервере (который мы создали на Zend Framework).

private String testMethod() < String text = ""; try < text = (String) client.call("cf.test"); >catch (XMLRPCException e) < Log.w("XMLRPC Test", "Error", e); text = "XMLRPC error"; >return text; >

Как вы уже заметили, я часто использую блоки try/catch, чтобы иметь возможность отловить все возникающие ошибки. Далее нам необходимо вызвать метод onCreate для того, чтобы вывести значения элементу TextView. Изменения выглядят следующим образом:

public class Client extends Activity < private XMLRPCClient client; private URI uri; @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.main); uri = URI.create("http://10.0.2.2/xmlrpc-test/public/server/"); client = new XMLRPCClient(uri); TextViewtextView = (TextView) findViewById(R.id.text_view); textView.setText(testMethod()); >private String testMethod() < String text = ""; try < text = (String) client.call("cf.test"); >catch (XMLRPCException e) < Log.w("XMLRPC Test", "Error", e); text = "XMLRPC error"; >return text; > >

Теперь мы готовы протестировать наш Android клиент. Выберите Run->Run configurations и создайте новую конфигурацию приложения Android для нашего проекта:

После того, как эмулятор загрузится, результат должен быть примерно таким:

Ура! Наш Android клиент использует веб-сервис RPC XML!

Теперь давайте создадим метод который будет вызывать getData:

private String getDataMethod(int num) < String text = ""; try < Object[] data = (Object[]) client.call("cf.getData", num); for(Object o: data) < HashMap map = (HashMap) o; text = text + "'datetime' =>" + map.get("datetime") + ", 'number' => " + map.get("number") + ", 'title' => " + map.get("title") + "\n\n"; > > catch (XMLRPCException e) < Log.w("XMLRPC Test", "Error", e); text = "XMLRPC error"; >return text; >

Метод, который мы вызываем (cf.getData), ожидает один параметр (целое число) и возвращает ассоциативный массив. В Java мы всё это приняли.

textView.setText(testMethod());
textView.setText(getDataMethod(12));

После сохранения и запуска (Run->Run configurations) наш измененный Android клиент должен выглядеть примерно так:

Вот и всё. В этом уроке я показал вам всё необходимое для создания XML RPC PHP сервера и Android клиента.

Источник

Connect To PHP Server Using Android

In this tutorial we will try to create a Connect To PHP Server using Android. Android is an open source so that developer find it easy to develop and expand new features. It used in several gadget like smartphone, tablet, and even television. It also provide an adaptive framework that allow the developer to develop an apps in a simpler way. So let’s do the coding..

Getting Started:

First you will have to download & install the Android Development IDE (Android Studio or Eclipse). Android Studio is an open source development feel free to develop your things. Here’s the link for the Android Studio https://developer.android.com/studio/index.html. Then you have to download & install XAMPP or any local server that run PHP scripts. Here’s the link for XAMPP server https://www.apachefriends.org/index.html.

Creating the database

tut1

Open your database web server then create a database name in it db_contact, after that click Import then locate the database file inside the folder of the application then click ok.

Читайте также:  Css сохранить пропорции изображения

Creating the database connection

Open your any kind of text editor(notepadd++, etc..). Then just copy/paste the code below then name it conn.php.

Creating PHP Main Script

This code contains the main function of the php server. This code will try to access the php server to get the data from the server base on the data that has been inputed. To do that open any kind of text editor(notepadd++, etc..), then copy it inside the text editor and save it as index.php

Now that we’re done with PHP, next is we will need to create the application to run the php server in the Android Platform.

Android Manifest File

The Android Manifest file provides essential information about your app to the Android system in which the system must required before running the code. It describe the overall information about the application. It contains some libraries that needed to access the several method within the app.

Layout Design

We will now create the design for the application, first locate the layout file called activity_main.xml, this is the default name when create a new activity. Then write these codes inside your layout file.

Creating the Server Handler

This code contains the handler for accessing the PHP server. This code will try to create a url to access the php server by sending a POST data within the android application.To do that create a new class then called it as ServerHandler. And write these block of codes inside it to be able to generate a url link to the server.

Note:To access the localhost server make sure you change the main_url same as your machine local IP address.

The Main Function

This code contains the main function of the application. This code will send the information of user to the PHP server when the button is clicked. To start with first locate your MainActivity java file and open it, then write these variable inside the MainActivity class.

Finally, initialize the require methods inside the onCreate method to run the application.

Try to run the app and see if it worked. There you have it we have created a Connect To PHP Server using Android. I hope that this tutorial help you to what you are looking for. For more updates and tutorials just kindly visit this site. Enjoy Coding.

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe’s, .ocx’s, .dll’s etc.)—only run source code.

Источник

Оцените статью