您的位置:首页 > 理论基础 > 计算机网络

HttpTool工具类

2016-06-08 11:19 423 查看
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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: