HttpTool工具类

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;
    }
}

你可能感兴趣的:(HttpTool工具类)