クライアント(android)
- HttpURLConnectionのインスタンスを生成する。
- インスタンスを設定する。
- BufferedOutputStreamでリクエストを送信する。
- BufferedInputStreamでレスポンスを受信する。
package net.kuttya.httppostsample; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class HttpPostSampleActivity extends Activity { private final static String SAMPLE_URL = "http://sample.php"; private Button submitButton; private TextView responseText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 送信ボタン submitButton = (Button)findViewById(R.id.main_submit); // レスポンス表示エリア responseText = (TextView)findViewById(R.id.main_response); } /* * 送信ボタンクリック */ public void clickEventSubmit(View view) { HttpURLConnection http = null; // HTTP通信 OutputStream out = null; // HTTPリクエスト送信用ストリーム InputStream in = null; // HTTPレスポンス取得用ストリーム BufferedReader reader = null; // レスポンスデータ出力用バッファ byte[] requestBytes; String result = null; requestBytes = new byte[5]; requestBytes[0] = 0x31; requestBytes[1] = 0x32; requestBytes[2] = 0x33; requestBytes[3] = 0x34; requestBytes[4] = 0x35; try { // URL指定 URL url = new URL(SAMPLE_URL); // HttpURLConnectionインスタンス作成 http = (HttpURLConnection)url.openConnection(); // POST設定 http.setRequestMethod("POST"); // HTTPヘッダの「Content-Type」を「application/octet-stream」に設定 http.setRequestProperty("Content-Type","application/octet-stream"); // URL 接続を使用して入出力を行う http.setDoInput(true); http.setDoOutput(true); // キャッシュは使用しない http.setUseCaches(false); // 接続 http.connect(); // データを出力 out = new BufferedOutputStream(http.getOutputStream()); out.write(requestBytes); out.flush(); // レスポンスを取得 in = new BufferedInputStream(http.getInputStream()); reader = new BufferedReader(new InputStreamReader(in)); result = reader.readLine(); // テキストエリアに表示 responseText.setText(result); } catch(Exception e) { e.printStackTrace(); } finally { try { if(reader != null) { reader.close(); } if(in != null) { in.close(); } if(out != null) { out.close(); } if(http != null) { http.disconnect(); } } catch(Exception e) { } } } }
- マニフェストファイルに下記のパーミッションを追加。
サーバ
- 今回はPHPで作成。
- HTTPリクエストを取得する。
- 取得したデータに対する処理を実施。(サンプルは受信データを送り返すだけ)
<?php // 受信データ格納 $data = file_get_contents("php://input"); echo "POST DATA RECEIVED. data[".$data."]" ?>
0 件のコメント:
コメントを投稿