Отправка данных POST в Android

Я испытан с PHP, JavaScript и большим количеством других языков сценариев, но у меня нет большого опыта с Java или Android.

Я ищу способ отправить данные POST в Сценарий PHP и отобразить результат.

275
задан Matt 23 December 2016 в 04:48
поделиться

3 ответа

* Обновлен ответ, который работает на 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
    }
} 
311
ответ дан 23 November 2019 в 02:08
поделиться

Вы можете использовать URLConnection с setDoOutput(true), getOutputStream() (для отправки данных), и getInputStream() (для получения). В Sun есть пример именно для этого.

6
ответ дан 23 November 2019 в 02:08
поделиться

Лучше использовать Apache Commons HttpClient, который также уже включен в Android. Посмотри на Разработчик Android: Обзор пакета HTTP-клиента Apache для получения общей информации об API.

7
ответ дан 23 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: