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>






