- How to Send Data From Android to PHP Server? Android Post Request Help
- Download HttpComponents Library
- How To Post Text Data?
- How To Post A File?
- Complete Android Code on How to Send Data From Android to PHP Server
- PHP file that will receive the posted data
- AndroidManifest.xml Code
- Output Screenshots
- Как отправить POST запрос с помощью HttpURLConnection?
- Android JSON POST метод
- Build Your First PHP for Android Application
How to Send Data From Android to PHP Server? Android Post Request Help
Hi guys! Today we are going to code on how to send data from Android to PHP server. This is an example app that can post a file and text data to a web server with PHP file as a receiver. Having the ability to (do HTTP Post Request) post data from android app to remote server is required for most apps. Here are some example use of this functionality:
1. You want to get statistics on how your app is being used (you have to tell your user and they must agree of course!)
2. Your app has an upload file feature.
3. A user should register on your database before using more features of your app.
Download HttpComponents Library
In this example, we are using a small library for posting a file, it is called the HttpComponents from the Apache Software Foundation. Please note that you won’t need this library if you’re just posting text data. The download can be found here: HttpComponents
- As of the moment, I downloaded the binary 4.2.3.zip
- When you extracted the zip file, find the lib folder and copy all the jar files there
- Copy those jar files to your project’s lib folder, here’s how to do that:
- Go to your workspace directory, find your project folder and inside, find the libs folder, put the jar files we extracted earlier
- Go back to eclipse and refresh your project files in the project explorer, now you can see the jar files inside your lib directory. See the screenshot below to visualize the goal of these 5 steps above.
How To Post Text Data?
How To Post A File?
You can use this code to post other file types such as an image.
Complete Android Code on How to Send Data From Android to PHP Server
This is our MainActivity.java code. In this code, we are:
- Using AsyncTask to prevent the network on main thread error.
- To test posting the text data, you must change the actionChoice variable value to 1.
- Else if you are to test posting a sample file, you must change the actionChoice to 2. Also, don’t forget to put a sample.txt file in your SD card root directory.
The code above should give you a lot of clue on how to send data from Android to PHP server. But we have few more steps to do, continue to read below.
PHP file that will receive the posted data
This is the post_date_receiver.php code. You must upload it in your server and specify the URL to our MainActivity.java
AndroidManifest.xml Code
Well, we are just having an INTERNET permission here.
Output Screenshots
Response is what post_date_receiver.php outputs when it receives the posted data.
Posting Text Data. The response array have our key-value pairs.
Posting Text File. The response is the content of my sample.txt file.
What do you think fo this code I came up with? If you have a better solution about how to send data from Android to PHP server, please let us know in the comments section below! We will add your solution or update this post if it deserves to, thanks!
Share this entry
Do you have any suggestion when we want to send BOTH string and file in one go? Suppose we want to create a feature which user can post a picture with some captions. How do we proceed with that?
Hey @Curious, how about putting those two methods in a single method and execute one after the other?
I’m trying to post data to a website from Android. The website just shows empty. How does the website refresh when it gets data? is the command $_POST always looking for data or does it only see the second it is sent?
The php server i’m trying to upload my file to requires authentication. How can i send the username and password before attempting the upload?
Hi @Rohan D, thanks for your query, I’ll have to make a new post for this one!
Dear Sir,
I need help in sending data to server with android code.I have an api example
http://getepass.com/api.php?action=login&&email=aaa@gmail.com&&password=root
I want to send email and password to server from mobile text and receive few parameter image ,name,compid etc and then show in app.
I am using a lib for this but I want to code it myself If possible please send me the example to post and read the json from server in android.
Thanks!
Prachi Gupta
Hey you could use it, its complete code here
android code start here
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.EventLogTags.Description;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint(“NewApi”)
public class xxx extends Activity< //implements OnClickListener
@SuppressLint(“NewApi”)
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
@Override
protected void onCreate(Bundle savedInstanceState) <
super.onCreate(savedInstanceState);
setContentView(R.layout.xxx);
post =(Button)findViewById(R.id.postButton);
post.setOnClickListener(new OnClickListener() <
@Override
public void onClick(View v) <
// TODO Auto-generated method stub
String result = null;
InputStream is = null;
EditText editText=(EditText)findViewById(R.id.name_forkeyfound);
String name=editText.getText().toString();
EditText editText6=(EditText)findViewById(R.id.contect_keyfound);
String contact_no=editText6.getText().toString();
EditText editText3=(EditText)findViewById(R.id.Email_forkeyfound);
String email=editText3.getText().toString();
EditText editText8=(EditText)findViewById(R.id.membership_keyfound);
String membership=editText8.getText().toString();
EditText editText9=(EditText)findViewById(R.id.description_keyfound);
String we_found=editText9.getText().toString();
ArrayList nameValuePairs = new ArrayList();
Log.d(“well2”, “msg”);
StrictMode.setThreadPolicy(policy);
Log.d(“well3”, “msg”);
//http post
try <
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(“http://10.0.2.2/my_folder_inside_htdocs/xxx.php”);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.d(“well4”, “msg”);
Log.e(“log_tag”, “connection success “);
Toast.makeText(getApplicationContext(), “Please Wait….”, Toast.LENGTH_SHORT).show();
>
catch(Exception e)
<
Log.e(“log_tag”, “Error in http connection “+e.toString());
Toast.makeText(getApplicationContext(), “Connection fail”, Toast.LENGTH_SHORT).show();
Log.d(“well5”, “msg”);
>
//convert response to string
Log.d(“well5”, “msg”);
try <
BufferedReader reader = new BufferedReader(new InputStreamReader(is,”iso-8859-1″),8);
StringBuilder sb = new StringBuilder();
Log.d(“well6”, “msg”);
String line = null;
while ((line = reader.readLine()) != null)
<
sb.append(line + “n”);
Intent i = new Intent(getBaseContext(),keyfound.class);
startActivity(i);
>
is.close();
result=sb.toString();
>
catch(Exception e)
<
Log.e(“log_tag”, “Error converting result “+e.toString());
Log.d(“well7”, “msg”);
>
JSONObject json_data = new JSONObject(result);
Источник
Как отправить POST запрос с помощью HttpURLConnection?
Добрый вечер. Начал разбираться в программировании под android и нашел много поднобных инструкций по отправке POST запроса на php сервер с помощью HttpClient, но потом выяснил что он устарел и перестал поддерживаться последим SDK который у меня установлен.
После чего узнал что следует пользоваться HttpURLConnection, но информации о том как осуществить с помощью него POST или GET запросы и обработать ответ от сервера не нашел.
Надеюсь на вашу помощь, желательно с подробными примерами. Огромное спасибо.
- Вопрос задан более трёх лет назад
- 36845 просмотров
Оценить 2 комментария
Минимум как-то так. А там сами обработаете что и как требуется и положено.
Особого отличия от HttpClient нет.
По сути нужно заполнить OutputStream дополнительно к текстовым параметрам формы еще и бинарными данными.
Вот какой-то пример есть: Upload a file using HTTPUrlConnection.
Рекомендую сначала настроить свой php и убедиться, что все работает при отправке файла через HTML-форму. Потом уже пробовать свой java-клиент. Для начала пробуйте мелкие бинарники передавать.
Смотрите, чтобы сервер ваш не согласился на прием файла очень большого размера, который ему просто некуда будет сохранить, т.е. нужно ограничение по размеру принимаемого файла. Или прием данных нежелательного содержания, например, какой-либо исполняемый код. Ну, это уже все другие вопросы.
Для отладки выводите лог и обрабатывайте ошибки буквально после каждого действия на клиенте и на сервере.
Источник
Android JSON POST метод
Я новичок в Android и занимаюсь разработкой приложения, которое извлекает данные с локального (временного) сервера SQL, используя PHP-скрипт для получения нужной таблицы и извлечения полей. Теперь все это хорошо, следуя инструкциям, так что у меня есть ReyclerView с CustomAdapter и использую LoaderManager так что у меня есть загрузчик, который выполняет метод fetchData в моем Utils Class внутри этого класса есть методы, используемые для HttpUrlConnection до извлечения данных JSON из моей базы данных SQL и из List<> моей модели (Dish.Java), которая содержит методы проводника и геттера.
Но теперь я пытаюсь вместо этого отправить данные в другую таблицу, например, для элементов, которым нравится или оценивают для каждого элемента для этой цели. Я создал новую таблицу, которая просто содержит значения в виде INT (позже прикрепить к элементам с внешним ключом), соответственно я сделал поиск и нашел PHP-скрипт (который подходит для моего идиота в случае извлечения данных) следующим образом:
Если я пытаюсь сделать POST Просьба не ставить на например Postman Я могу изменить поле лайков в моей таблице. но не знаю, как я собираюсь добавить это к моему запросу
так что, например, принимая значение Ratingbar после оценки и накапливать его на сервере в поле лайков (я знаю, это смешно).
что я нашел, что я могу сделать setRequestMethod для HttpUrlConnection «POST» и использовать DataOutputStream как это:
Это мой код в слушателе рейтинга для выполнения AsyncTask doInBackground
и затем выполнить то, что когда я отладил, я могу получить рейтинг и установить его в массив, установить соединение все, но это ничего не обновляет в моей базе данных.
поэтому любая Рекомендация о том, как я могу достичь этого или, может быть, есть совершенно другой способ, даже пересмотреть, будет принята с благодарностью.
вот мои уроки, так что вы посмотрите, что происходит
Просто в основной деятельности, связанной с этим у меня есть мой адаптер
у меня есть переопределенный метод Loader
Источник
Build Your First PHP for Android Application
Операционная система Android повергла рынок сматрфонов в шок :). В отличии от компании Apple, которая предъявляет достаточно строгие требования к разработчикам, которые хотят выставлять свои приложения в iPhone App Store, Google создал платформу Android открытой (в оригинале wide open). В настоящее время вы можете писать приложения PHP. Парни из Irontech создали необходимое, и используя Scripting Layer для Android (SL4A), вы можете создавать на PHP приложения для Android.
Нет!
В этой статье я расскажу как установить, настроить и использовать PHP для Android и SL4A, также мы увидим демо приложения и вы получите первый опыт разработки приложений для Android на PHP.
Установка PHP для Android
Для установки PHP для Android, у вас должен быть телефон или эмулятор поддерживающий Android версии 1.5 или больше, также в настройках установки приложений, должна стоять галочка на установке приложений из неизвестных источников. После всего этого, просто установите два пакета SL4A environment и PHP for Android APK.
Установка SL4A достаточно проста, однако после установки пакета PHP for Android application, необходимо запустить его и нажать «install» для полной установки(В процессе установки программа скачивает где-то около 2 МБ). Если у вас появились проблемы с установкой, то есть видео-демонстрация на Vimeo((или здесь)).
Настройка среды разработки PHP для Android
Если вы установили PHP для Android, теоретически, вы можете писать приложения на своем телефоне. Но с практической точки зрения, это не будет хорошей идеей. То что вы должны сделать это скачать Android SDK, установить эмулятор и начать писать код, используя ваш любимый редактор.
После скачивания SDK, разархивируйте содержимое, запустите приложение Android, находящееся в каталоге tools, и установите эмулятор. В меню Android SDK and AVD Manager, выберите Virtual Devices и нажмите на кнопку New. Назовите ваш эмулятор (например «Droid2») и выберите Android 2.2. Введите 10 МБ в качестве размера SD Card и нажмите Create AVD.
Теперь у вас есть настроенный эмулятор, нажмите кнопочку Start. Здесь возникает некоторая сложность, вы не можете просто скопировать файлы на виртуальное устройство, которое только что создали. Вам необходимо настроить форвардинг портов (port forwarding) и поместить ваш PHP-скрипт на виртуальное устройство, используя программу под названием adb, которая является частью Android SDK. Она также находится в каталоге tools.
Далее вы запустите сервер на вашем виртуальном устройстве, соединитесь с сервером для передачи вашего скрипта. Следующие шаги помогут вам запустить все на столько быстро на сколько это возможно. (Вы можете прочитать полную документацию по этому процессу здесь).
На вашем запущенном виртуальном устройстве перейдите на экран Applications и нажмите SL4A.
# на экране SL4A, нажмите кнопочку Menu, выберите View и выберите Interpreters.
# Нажмите Menu снова, выберите Start Server и выберите Private.
# Опустите область уведомлений (Android notification bar) вниз и вы увидите Службу SL4A. (Нажмите на службу и запишите номер порта, который прослушивает ваш сервер, например 47000.)
# Откройте командную строку и установите форвардинг портов, используя команду adb. Например, введите команду «adb forward tcp:9999 tcp:47000» (замените 47000 на номер вашего порта).
# Установите переменную окружения AP_PORT. На UNIX или Mac, запустите «export AP_PORT=9999». На Windows «set AP_PORT=9999».
# Для теста работы эмулятора запустите «run adb push my_script.php /sdcard/sl4a/scripts» (замените my_script.php на название вашего скрипта).
Вы также можете работать с реальным телефоном. Следуйте теми же шагами, что и с эмулятором. Чтобы облегчить процесс установите переменную окружения ANDROID_HOME, которая будет указывать на расположение вашего Android SDK и добавьте путь к каталогу tools в список путей (что-то я не особо понял как это сделать на телефоне, если читатели знают, то пусть напишут в комментариях)
Создание Android приложений на PHP
Написание приложений на PHP очень легкий процесс после того как вы настроили все что описано выше. Единственно что стоит отметить, что версия PHP для Android очень урезана. В вашем распоряжении будут основные функции PHP и поддержка JSON. А если же вы являетесь разработчиком Android, который хорошо знаком с Java фреймворком для Android, вы заметите что Scripting Layer для Android не обеспечивает доступ ко всем компонентам, которые бы вы получили, используя для разработки Java (будем надеятся что это только пока).
То что обеспечивает SL4A — это только фасад к подмножеству Android API. (Полный список методов, обеспечиваемых SL4A, доступен тут ) В чем же прикол PHP для Android — вы можете легко разрабатывать приложени е и видеть его работу, написав всего лишь несколько строк кода. Давайте рассмотрим приложение, которое работает с котировками, которое занимает меньше 60 строк кода.
- ‘QUOTE_SERVER’ , ‘http://quoter.take88.com/?ticker=%s’ );
- require_once( «Android.php» );
- $droid = new Android();
- $action = ‘get_tickers’ ;
- $tickers = » ;
- while (TRUE) <
- switch ($action) <
- case ‘quote’ :
- $droid->dialogCreateSpinnerProgress( «Querying stock information server . » , «Please wait» );
- $droid->dialogShow();
- $quotes = @array_slice(json_decode(file_get_contents(sprintf(QUOTE_SERVER, $tickers))), 0, 3);
- $droid->vibrate();
- $droid->dialogDismiss();
- // Possible data points.
- // «SYMBOL»,»NAME»,»LAST_TRADE»,»MORE_INFO»,»LAST_TRADE_DATE»,»LAST_TRADE_TIME»,»OPEN»,»DAYS_HIGH»,»DAYS_LOW»,»DIVIDEND_SHARE»,»PE_RATIO»,»52_WEEK_LOW»,»52_WEEK_HIGH»,»VOLUME»
- $output = » ;
- for ($i = 0, $cnt = count($quotes); $i «Company: » . $quotes[$i]->NAME . «\n» ;
- $output .= «Ticker: » . $quotes[$i]->SYMBOL . «\n» ;
- $output .= «Last trade: $» . $quotes[$i]->LAST_TRADE . «\n» ;
- $output .= «\n» ;
- >
- $output = html_entity_decode($output, ENT_QUOTES, «UTF-8» );
- // Something is wrong with ‘
- $output = str_replace( «‘» , «‘» , $output);
- $droid->dialogCreateAlert( «Your stock quotes» , $output);
- $droid->dialogSetPositiveButtonText( «Get new quote» );
- $droid->dialogSetNegativeButtonText( «Exit» );
- $droid->dialogShow();
- $response = $droid->dialogGetResponse();
- if ($response[ ‘result’ ]->which == ‘negative’ ) <
- $action = «exit» ;
- > else <
- $action = ‘get_tickers’ ;
- >
- break ;
- case ‘get_tickers’ :
- $response = $droid->getInput( «Stock Tickers (max. 3)» , «Enter Tickers.\nSeparate with spaces.» );
- $tickers = str_replace( ‘ ‘ , ‘+’ , $response[ ‘result’ ]);
- $droid->vibrate();
- $action = ‘quote’ ;
- break ;
- case ‘exit’ :
- $droid->exit();
- exit();
- break ;
- >
- >
- ?>
* This source code was highlighted with Source Code Highlighter .
Скопируйте и поместите этот код в редактор, сохраните под именем quoter4android.php и загрузите его в эмуляторе. Если эмулятор не запущен, запустите его, настройте форвардинг портови загрузите quoter4android.php, используя adb.
Для запуска приложения в вашем эмуляторе, перейдите на экран приложения, нажмите иконку SL4A и нажмите quoter4android.php.
Для установки quoter4android.php на ваш телефон, вы можете настроить форвардинг портов, но легче соединить телефон с компьютером через USB и скопировать скрипт в каталог sl4a/scripts. Однако для запуска скрипта, необходимо отсоединить его от компьютера, иначе вы не увидите установленные скрипты, а зщатем кликните иконку SL4A.
Заключение
С SL4A и PHP for Android можно сделать много интересных вещей; эта статья всего лишь маленькая демонстрация возможностей. Все эти приложения очень молоды — новая версия SL4A вышла когда я писал эту статью — и в будущем мы будем получать все новые и новые возможности.
Источник