Skip to content

Instantly share code, notes, and snippets.

@yeongu-dev
Last active December 13, 2015 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save yeongu-dev/4974624 to your computer and use it in GitHub Desktop.
Save yeongu-dev/4974624 to your computer and use it in GitHub Desktop.
Java. HttpPostMDeliverThread: HTTP의 Post방식 클래스
/*
HttpPostMDeliver, guya00@gmail.com
Usecase:
HttpPostMDeliverThread thread = new HttpPostMDeliverThread(handler, encoding);
thread.setDaemon(true);
thread.addQuery(name, value);
thread.start();
License: BSD license
Copyright (c) 2013, yg&tk
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import android.os.Handler;
import android.os.Message;
public class HttpPostMDeliverThread extends Thread {
static final String TAG = "HttpPostMDeliverThread";
static final boolean DEBUG = true;
static final int MSG = 1000;
private String _hostUrl;
private String _encoding;
private HashMap<String, String> _queryMap;
private Handler _handler;
public HttpPostMDeliverThread(Handler handler, String hostUrl, String encoding)
{
this._handler = handler;
this._hostUrl = hostUrl;
this._encoding = encoding;
this._queryMap = new HashMap<String, String>();
}// HttpPostMDeliverThread
public HttpPostMDeliverThread(Handler handler, HashMap<String, String> queryMap, String encoding)
{
_queryMap = queryMap;
_encoding = encoding;
} // HttpPostMDeliverThread
public void addValue(String name, String value)
{
_queryMap.put(name, value);
}// addValue
public void run()
{
String buffer = null;
StringBuilder sber = new StringBuilder();
URL url = null;
try
{
url = new URL(_hostUrl);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
try
{
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDefaultUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), _encoding));
pw.write(makeQueryStringFromMap(_queryMap));
pw.flush();
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream(), _encoding));
while ((buffer= bf.readLine()) != null)
{
sber.append(buffer);
}
}
catch (IOException e)
{
e.printStackTrace();
}
Message msg = Message.obtain(_handler, this.MSG, sber.toString());
_handler.sendMessage(msg);
}// run
protected String makeQueryStringFromMap(HashMap<String, String> queryMap)
{
StringBuilder sb = new StringBuilder();
Set<Entry<String, String>> set = queryMap.entrySet();
Iterator<Entry<String, String>> it = set.iterator();
while (it.hasNext())
{
Map.Entry<String, String> E = (Map.Entry<String, String>)it.next();
sb.append( E.getKey() ).append("=").append( E.getValue() );
}
return sb.toString();
}//makeQueryStringFromMap
}
@yeongu-dev
Copy link
Author

Todo

  • get method thread class
  • abstract http method thread class

@yeongu-dev
Copy link
Author

Thread를 상속받는게 맞는건지 impliments Runnable 을 사용하는것이 맞는건지는 나중에 생각..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment