SQLの窓

2013年10月29日


Android で Post と Get

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 クラス



【Androidの最新記事】
posted by lightbox at 2013-10-29 21:37 | Android | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり