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

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

最佳答案

注意(2020年10月):在Android API级别30中,以下答案中使用的AsyncTask已被弃用。有关更多更新的示例,请参阅Official documentationthis blog post
已更新(2017年6月)在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());
            }
        }
    }
引用:
  • https://developer.android.com/reference/java/net/HttpURLConnection.html
  • How to add parameters to HttpURLConnection using POST using NameValuePair

  • 原始答案(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
        }
    }
    

    09-11 06:31
    查看更多