Я испытан с PHP, JavaScript и большим количеством других языков сценариев, но у меня нет большого опыта с Java или Android.
Я ищу способ отправить данные POST в Сценарий PHP и отобразить результат.
* Обновлен ответ, который работает на Android 6.0+. Спасибо @Rohit Suthar , @Tamis Bolvari и @sudhiskr за комментарии. *
public class CallAPI extends AsyncTask<String, String, String> {
public CallAPI(){
//set context variables if required
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String urlString = params[0]; // URL to call
String data = params[1]; //data to post
OutputStream out = null;
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
out = new BufferedOutputStream(urlConnection.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
writer.write(data);
writer.flush();
writer.close();
out.close();
urlConnection.connect();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Ссылки:
Предыдущий ответ
Примечание : Это решение устарело. Он работает только на устройствах Android до 5.1. Android 6.0 и более поздние версии не включают HTTP-клиент Apache, используемый в этом ответе.
Http-клиент от Apache Commons - это то, что вам нужно. Он уже включен в android. Вот простой пример того, как использовать HTTP Post.
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
Вы можете использовать URLConnection
с setDoOutput
(true)
, getOutputStream()
(для отправки данных), и getInputStream()
(для получения). В Sun есть пример именно для этого.
Лучше использовать Apache Commons HttpClient, который также уже включен в Android. Посмотри на Разработчик Android: Обзор пакета HTTP-клиента Apache для получения общей информации об API.