AndroidでHTTP POSTリクエストを実行する方法

ページ名:AndroidでHTTP POSTリクエストを実行する方法

HTTPポストは、Android 5.1以降、org.apache.httpやAndroidHttpClientのような非推奨のHTTPクラスの一部です。 HTTP Postは、リクエスト・フォーム内で送信されたデータを特定のWebサーバーが受信して保存するようリクエストするためにJavaで使用されます。データは、名前と値のペアで送信され、保存されます。ペアの例としては、email-メールアドレス、username-ユーザー名、password-パスワードなどがあります。

パート1

TryブロックとHttpURLConnectionオブジェクトの作成

  1. Android Manifestにインターネットアクセス許可を追加します。Android ManifestはXMLファイルで、デバイスの互換性と機能へのアクセスを決定する重要な情報をAndroidシステムに提供します。AndroidManifest.xml "ファイルに、インターネット・アクセスを提供するために以下の行を入力します。
      <uses-permission android:name="android.permission.INTERNET" />を使用する。
  2. tryブロックを作成する。Javaでは、try文は例外ハンドラであり、アクションを実行できない場合にプログラムがクラッシュするのを防ぎます。これはネットワーク・ロケーションへの接続を必要とするため、try文は接続を確立できない場合に例外をキャッチします。これを新しいJavaメソッドに追加することができます。
      try { //例外を発生させるステートメントを入力する }.
  3. HttpURLConnectionとURLオブジェクトを構築する。Javaはオブジェクト指向言語です。オブジェクトは、クラスのインスタンスであるステートとビヘイビアで構成されます。HttpURLConnectionオブジェクトは、インターネット上でデータを送受信します。コードでは、新しいメソッドの最初にURLオブジェクトを作成し、HttpURLConnectionオブジェクトが接続するためのURLを割り当てます。
      URL url = new URL("http://exampleurl.com/"); HttpURLConnection client = (HttpURLConnection) url.openConnection();
    • ベストプラクティスとして、例外をキャッチしやすくするために、tryブロックの外でURLとHttpURLConnectionオブジェクトを確立します。
    • URL url = new URL("http://exampleurl.com/"); HttpURLConnection client = null; try { client = (HttpURLConnection) url.openConnection(); }.
パート2

出力リクエストのポストと例外処理

  1. リクエストメソッドをPostに設定します。サーバーに情報を送信するには、HttpURLConnectionオブジェクトのタイプをpostに設定し、setDoOutput()を使用して出力をtrueに設定する必要があります。setRequestProperty() 関数を使用して、一般的なリクエスト・プロパティを設定します。この一般的なリクエスト・プロパティには、サーバからの要求が既知のキーと、対応するキーに含まれる値の 2 つの要素が必要です。
    • setRequestProperty() 関数は、Accept-Encoding リクエスト・ヘッダとして使用され、自動解凍を無効にします。
      client.setRequestMethod("POST"); client.setRequestProperty("Key", "Value"); client.setDoOutput(true);
  2. ストリームをサーバーに出力する。出力ストリームに書き込む、つまりポストするためには、サーバーから出力ストリームを要求し、終了したらストリームをフラッシュして閉じる必要があります。
      OutputStream outputPost = new BufferedOutputStream(client.getOutputStream()); writeStream(outputPost); outputPost.flush(); outputPost.close();
    • パフォーマンス上の理由から、コンテンツがどのくらいのバイト数になるかをサーバーに知らせるのは良いアイデアです。最適な方法は、ボディの長さがわかっている場合は setFixedLengthStreamingMode(int)、長さがわかっていない場合は setChunkedStreamingMode(int)を使用します。 前のメソッドのいずれも使用しないと、HttpURLConnectionオブジェクトは、送信する前にメモリにボディ全体をバッファリングします。
    • client.setFixedLengthStreamingMode(outputPost.getBytes().length); client.setChunkedStreamingMode(0);
  3. 例外をキャッチする。try文の後、catchブロックを使用して、IOExceptionで入出力の例外をチェックし、MalformedURL例外でURLエラーをキャッチし、SocketTimeoutExceptionで時間内にURLから応答が提供されないかチェックします。
      catch(MalformedURLException error) { //Handles an incorrectly entered URL } catch(SocketTimeoutException error) { //Handles URL access timeout. } catch (IOException error) { //Handles input and output errors }
  4. URLから切断する。URL接続が終わったら、URLから切断する必要があります。切断を試みる前に、URLに接続していることを必ず確認してください。
      finally { if(client != null) // 接続がNULLでないことを確認します。
この記事は、CC BY-NC-SAで公開されている「 How to Execute HTTP POST Requests in Android 」を改変して作成しました。特に断りのない限り、CC BY-NC-SAで利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧