HashMap を使って以下のように使用します Mapmap = new HashMap (); map.put("url", ""); map.put("charset", "SHIFT_JIS"); map.put("action", "regist"); map.put("name", "lightbox"); map.put("title", "日本語"); map.put("comment", "本文"); new HttpPost() { @Override protected void onPostExecute(String result) { System.out.println(result); } }.execute(map); HttpPost.java
package jp.winofsql; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Iterator; import java.util.Map; import android.os.AsyncTask; import android.util.Log; // ********************************************************* // POST して テキストを取得する // ********************************************************* public class HttpPost extends AsyncTask<Map, Void, String> { @Override protected String doInBackground(Map... params) { StringBuffer get_data = null; Map<String,String> myArg = params[0]; try { // ターゲット URL url = new URL(myArg.get("url")); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); http.setConnectTimeout(30000); http.setReadTimeout(30000); http.setDoOutput(true); http.setRequestMethod("POST"); // 接続 http.connect(); OutputStreamWriter osw = new OutputStreamWriter(http.getOutputStream()); BufferedWriter bw = new BufferedWriter(osw); Iterator<String> it = myArg.keySet().iterator(); String key = null; String value = null; String data = ""; while(it.hasNext()) { key = it.next().toString(); if ( key.equals("url") ) { continue; } value = myArg.get(key); if ( !data.equals("") ) { data += "&"; } data += key + "=" + URLEncoder.encode(value, myArg.get("charset")) ; } Log.i("",data); bw.write( data ); bw.close(); osw.close(); // 以下読み込み3セット InputStream i_stream = http.getInputStream(); // UTF-8 でリーダーを作成 InputStreamReader i_stream_reader = new InputStreamReader(i_stream, myArg.get("charset")); // 行単位で読み込む為の準備 BufferedReader b_reader = new BufferedReader(i_stream_reader); // 行の一括読みこみ String line_buffer; get_data = new StringBuffer(); // BufferedReader は、readLine が null を返すと読み込み終了 while ( null != (line_buffer = b_reader.readLine() ) ) { // コマンドプロンプトに表示 get_data.append( line_buffer ); get_data.append( "\n" ); } // 接続解除 http.disconnect(); } catch(Exception e) { Log.i("HttpPost", e.getMessage()); } return get_data.toString(); } }
Get は 実行時の引数に URL と キャラクタセットを指定します
new HttpGet() {
@Override
protected void onPostExecute(String result) {
System.out.println(result);
}
}.execute("http://matome.naver.jp/feed/hot","UTF-8");
HttpGet.java
package jp.winofsql; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import android.os.AsyncTask; import android.util.Log; // ********************************************************* // GET して テキストを取得する // ********************************************************* public class HttpGet extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { StringBuffer get_data = null; try { // ターゲット URL url = new URL(params[0]); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); // GET メソッド http.setRequestMethod("GET"); // 接続 http.connect(); // 以下読み込み3セット InputStream i_stream = http.getInputStream(); // UTF-8 でリーダーを作成 InputStreamReader i_stream_reader = new InputStreamReader(i_stream, params[1]); // 行単位で読み込む為の準備 BufferedReader b_reader = new BufferedReader(i_stream_reader); // 行の一括読みこみ String line_buffer; get_data = new StringBuffer(); // BufferedReader は、readLine が null を返すと読み込み終了 while ( null != (line_buffer = b_reader.readLine() ) ) { // コマンドプロンプトに表示 get_data.append( line_buffer ); get_data.append( "\n" ); } // 接続解除 http.disconnect(); } catch(Exception e) { Log.i("HttpGet", e.getMessage()); } return get_data.toString(); } }
関連する記事 Framework4.5(C#)ストア : HttpClient で Post と Get する汎用 static クラス Framework4(C#) : WebClient で Post と Get する汎用 static クラス Framework4(C#) : Windows Phone OS 7.1 : WebClient で Post と Get する汎用 static クラス
|
【Androidの最新記事】
- デバイスを探す / Find My Device - Google / Android Find
- JavaScript から Android へアクセス
- Monaca と 本当の 『Onsen UI最小限のテンプレート』
- Android 5.1 リリース済み。SDK( android-sdk_r24.0.2-windows.zip ) でまずエミュレータ作って、あとから Eclipse と Android Studio..
- クラウドでアプリを作成してスマホで動作させる『Monaca』を Android エミュレータの 5.1 で動作確認しました
- 別の ADT(Android) で作成されたワークスペースを最新の ADT で開く場合の操作方法
- Android : ListView Twitter 検索テンプレート
- トラブル : AndroidManifest.xml に XML 宣言があるとエラーになる???
- Twitter API の自分のアプリのトークンを使って投稿するだけの class Android_Twitter
- Android 単純リストビューを google-gson で最速構築
- Android をテストするのにほんの少し楽になるかもしれないクラス
- Android : Google Spreadsheets API version 3.0でGoogleスプレッドシートを参照
- Android 4.2.2(ADT) : class MyDatePicker extends DatePickerDialog
- Android : 日付ダイアログをインナーで使う( 完了ボタンをクリックした場合としない場合の対応 )
- Android(4.2.2) ADT から Post や Get をできるかぎり簡単にするサンプル
- Android ADT : 単純画面遷移
- HashMap の Key と Value をそれぞれソートして、最終的には 配列に変換して テンプレートを使って for ループを簡単に記述する
- ADT Eclipse : sysout テンプレートの変更
- Android(ADT Eclipse) 用 ボタンイベントテンプレート
- Android から Post 投稿 / HttpPostAndXml extends AsyncTask<Map, Void, Document>