1. ホーム

[解決済み】AndroidでPOSTデータを送信する方法

2022-03-29 04:45:37

質問

PHPやJavaScriptなど多くのスクリプト言語の経験がありますが、JavaやAndroidはあまり経験がありません。

を送信する方法を探しています。 POST のデータを PHP スクリプトに送信し、その結果を表示します。

どのように解決するのですか?

注(2020年10月)。以下の回答で使用しているAsyncTaskは、Android API level 30で非推奨となりました。詳しくは 公式ドキュメント または このブログの記事 より新しい例として

更新(2017年6月)Android6.0+で動作するアンサーです。おかげさまで Rohit Suthar , タミス・ボルヴァリ および スディスクル をコメントとしていただきました。

    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がおすすめです。アンドロイドにはすでに含まれています。これを使った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
    }
}