小编典典

在 Android 中发送 POST 数据

all

我对 PHP、JavaScript 和许多其他脚本语言有经验,但我对 Java 或 Android 没有太多经验。

我正在寻找一种将 POST 数据发送到 PHP 脚本并显示结果的方法。


阅读 83

收藏
2022-04-18

共1个答案

小编典典

注意(2020 年 10 月):以下答案中使用的 AsyncTask 在 Android API 级别 30 中已弃用。请参阅
官方文档
此博客文章以获取更多更新示例

更新(2017 年 6 月)适用于 Android 6.0+ 的答案。

    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());
            }
        }
    }

原始答案(2010 年 5 月)

注意:此解决方案已过时。 它仅适用于最高 5.1 的 Android 设备。Android 6.0 及更高版本不包括此答案中使用的 Apache
http 客户端。

来自 Apache Commons 的 Http Client 是必经之路。它已经包含在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
    }
}
2022-04-18