[解決済み】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());
}
}
}
参考文献
- https://developer.android.com/reference/java/net/HttpURLConnection.html
- HttpURLConnectionにNameValuePairを使用してPOSTでパラメータを追加する方法
オリジナル回答(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
}
}
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] PHP 配列をキーではなく値で削除する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] Java の substring() の時間複雑性
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。