Android进阶篇-Http协议

在Android开发过程中,很多情况下,我们需要通过Http协议获取服务端的数据接口。

这里我们通过封装一个Http工具类:

    /**
     * 发送http请求
     * @param urlPath 请求路径
     * @param requestType 请求类型
     * @param request 请求参数,如果没有参数,则为null
     * 
     * @return
     */
    public static String sendRequest(String urlPath, String requestType, String request,String tokenid) {
        
        URL url = null;
        HttpURLConnection conn = null;
        OutputStream os = null;
        InputStream is = null;
        String result = null;
        try {
            url = new URL(urlPath);
            conn = (HttpURLConnection)url.openConnection();
            if (!"".equals(requestType)) {
                conn.setRequestMethod(requestType);
            }
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setReadTimeout(10 * 1000);
            conn.setConnectTimeout(6 * 1000);
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("Content-Length", Integer.toString(request.trim().getBytes().length));
            
            if (!"".equals(tokenid)) {
                conn.setRequestProperty("tokenid", tokenid);
            }

            if (request != null && !"".equals(request)) {
                os = conn.getOutputStream();
                os.write(request.getBytes());
                os.flush();
            }
            Log.i(TAG,"code="+conn.getResponseCode());
            
            if (200 == conn.getResponseCode()) {
                is = conn.getInputStream();
                byte[] temp = readStream(is);
                result = new String(temp);
            }
            
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
                if (os != null) {
                    os.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (result != null) {
            return result;
        } else {
            return null;
        }
    }
    
    public static byte[] readStream(InputStream is) throws Exception {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        byte[] buffer = new byte[2048];
        int len = 0;
        while((len = is.read(buffer)) != -1){
            os.write(buffer,0,len);
        }
        is.close();
        return os.toByteArray();
    }
posted @ 2012-05-28 10:03  暗殇  阅读(262)  评论(0编辑  收藏  举报