HashMap を使って以下のように使用します
Map map = 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 クラス