ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Java : HttpPost クラス
日時: 2016/05/29 21:55
名前: lightbox



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;

public class HttpPost {

	// **********************************************
	// 指定した URL へ 任意の charset で処理
	// **********************************************
	public static String execute(String targetUrl,Map<String,String> param, String targetCharset) {

		StringBuffer web_data = new StringBuffer();

		try {

			// **********************************************
			// インターネットへの接続
			// **********************************************
			// 読み込む WEB上のターゲット
			URL url = new URL(targetUrl);
			// 接続オブジェクト
			HttpURLConnection http = (HttpURLConnection)url.openConnection();
			http.setDoOutput(true);
			// POST メソッド
			http.setRequestMethod("POST");
			// 接続
			http.connect();

			OutputStreamWriter osw = new OutputStreamWriter(http.getOutputStream());
			BufferedWriter bw = new BufferedWriter(osw);

			Iterator<String> it =  param.keySet().iterator();
			String key;
			String value;
			StringBuffer data = new StringBuffer();
			while(it.hasNext()) {
				key = it.next().toString();
				value = param.get(key);
				if ( !data.toString().equals("") ) {
					data.append("&");
				}
				data.append(String.format("%s=%s",key,URLEncoder.encode(value, targetCharset)));
			}

			System.out.println(data.toString());

			bw.write( data.toString() );
			bw.close();
			osw.close();

			// **********************************************
			// ストリームとして読み込む準備
			// **********************************************
			// 以下読み込み3点セット InputStream / InputStreamReader / BufferedReader
			InputStream input_stream = http.getInputStream();
			// UTF-8 でリーダーを作成
			InputStreamReader input_stream_reader = new InputStreamReader(input_stream, targetCharset);
			// 行単位で読み込む為の準備
			BufferedReader buffered_reader = new BufferedReader(input_stream_reader);

			// **********************************************
			// 行の一括読み込み
			// **********************************************
			String line_buffer = null;
			// BufferedReader は、readLine が null を返すと読み込み終了
			while ( null != (line_buffer = buffered_reader.readLine() ) ) {
				// コマンドプロンプトに表示
				web_data.append( line_buffer );
				web_data.append( "\n" );
			}

			// **********************************************
			// 接続解除
			// **********************************************
			http.disconnect();
		}
		catch(Exception e) {
			// 失敗
			System.out.println( "インターネットへのアクセスに失敗しました" );
			e.printStackTrace();
		}
		return web_data.toString();
	}


}
メンテナンス

呼び出し ( No.1 )
日時: 2016/05/29 21:54
名前: lightbox


日時: 2016/05/29 21:54
名前: lightbox
text は、複数行入力の Text クラス です
// POST データ
Map<String,String> param = new HashMap<String,String>();
param.put("send", "send");
param.put("subject", "テスト投稿");
param.put("name", "ウインドウビルダー");
param.put("text", text.getText());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
param.put("datetime", sdf.format(new Date()));

// インターネットアクセス
String data = HttpPost.execute("http://localhost/log/easy_board/csvtype/board.php", param, "utf-8");
// データを取得できた
if ( !data.equals("") ) {
	// コンソールで確認
	System.out.println(data);
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス