public class HttpTool implements Runnable{
private String url = "";
private String body = "";
private int timeout = 0;
private Handler handler = null;
/**
* @param url
*/
public HttpTool(String url) {
super();
this.url = url;
this.setTimeout(10000);
}
private String httpPost()
{
String result = "";
BufferedReader responseReader = null;
HttpURLConnection httpConn = null;
try {
URL url = new URL(this.url);
httpConn = (HttpURLConnection) url.openConnection();
// //设置连接属性
httpConn.setDoOutput(true);// 使用 URL 连接进行输出
httpConn.setDoInput(true);// 使用 URL 连接进行输入
httpConn.setUseCaches(false);// 忽略缓存
httpConn.setRequestMethod("POST");// 设置URL请求方法
httpConn.setConnectTimeout(this.timeout);//设置链接超时
httpConn.setReadTimeout(timeout); //设置读取超时
// 设置请求属性
// 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
httpConn.setRequestProperty("Content-length",""+this.body.getBytes("utf-8").length);
/***********************************************************
*application/x-www-form-urlencoded
*text/xml; charset=UTF-8
*application/json
*
**********************************************************/
//httpConn.setRequestProperty("Content-Type", "application/json"); //设置文件类型
//httpConn.setRequestProperty("Connection", "Keep-Alive"); //维持长连接
//httpConn.setRequestProperty("Charset", "UTF-8"); //设置字符集
// 建立输出流,并写入数据
OutputStream outputStream = httpConn.getOutputStream();
outputStream.write(this.body.getBytes("utf-8"));//以文件流的方式发送数据
outputStream.close();
// 获得响应状态
int responseCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功
// 当正确响应时处理数据
StringBuffer sb = new StringBuffer();
String readLine;
// 处理响应流,必须与服务器响应流输出的编码一致
responseReader = new BufferedReader(new InputStreamReader(
httpConn.getInputStream(), "UTF-8"));
while ((readLine = responseReader.readLine()) != null) {
// sb.append(readLine).append("\n");
sb.append(readLine);
}
responseReader.close();
Log.e("RESULT", sb.toString());
result = sb.toString().trim();
}
} catch (IOException e) {
}finally{
if(httpConn != null)
httpConn.disconnect();
}
return result;
}
@Override
public void run() {
Message msg = new Message();
msg.what = 0x123;
msg.obj = "";
String result = "";
result = httpPost();
msg.obj = result.trim();
handler.sendMessage(msg);
}
/**
* @return the body
*/
public String getBody() {
return body;
}
/**
* @param body the body to set
*/
public void setBody(String body) {
this.body = body;
}
/**
* @return the timeout
*/
public int getTimeout() {
return timeout;
}
/**
* @param timeout the timeout to set
* @param timeout 例如10000 代表10s
*/
public void setTimeout(int timeout) {
this.timeout = timeout;
}
/**
* @return the handler
*/
public Handler getHandler() {
return handler;
}
/**
* @param handler the handler to set
*/
public void setHandler(Handler handler) {
this.handler = handler;
}
}