package com.inspection.util;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;
import java.util.UUID;
import android.content.ContentValues;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
public class HttpUtil {
    public static String sessionId;
    public static String ip;
    public static int port;
    public static String realPath;
    public static String doGet(String urlStr, Map params) throws Exception {
        HttpURLConnection urlConnection=null;
        String result="";
        try {
            // 根据地址创建URL对象
            StringBuffer strUrl = new StringBuffer("http://" + ip + ":" + port + "/");
            strUrl.append(urlStr);
            URL url = new URL(strUrl.toString());
            // 根据URL对象打开链接
            urlConnection = (HttpURLConnection) url
                    .openConnection();
            if(urlConnection==null){
                return "0";
            }
            // 设置请求的方式
            urlConnection.setRequestMethod("GET");
            if(sessionId!=null||!"".equals(sessionId)){
                urlConnection.setRequestProperty("Cookie", sessionId);
            }
            urlConnection.setUseCaches(true);
            // 设置请求的超时时间
            urlConnection.setReadTimeout(18000);
            urlConnection.setConnectTimeout(18000);
            // 设置请求的头
            urlConnection.setRequestProperty("Connection", "keep-alive");
            urlConnection.setRequestProperty("Charset", "utf-8");
            // 设置请求的头
            urlConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            // 设置请求的头
            urlConnection
                    .setRequestProperty("User-Agent",
                            "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
            urlConnection.setDoOutput(true); // 发送POST请求必须设置允许输出
            urlConnection.setDoInput(true); // 发送POST请求必须设置允许输入
                                            //setDoInput的默认值就是true
            if(params!=null){
                // 传递的数据
                StringBuffer data=new StringBuffer();
                for (Map.Entry entry : params.entrySet()) {
                    data.append(URLEncoder.encode(entry.getKey(),"utf-8")+"="+URLEncoder.encode(entry.getValue(),"UTF-8")+"&");
                }
                data.deleteCharAt(data.length()-1);
                String content=data.toString();
                // 设置请求的头
                urlConnection.setRequestProperty("Content-Length",
                        String.valueOf(content.getBytes().length));
                //获取输出流
                OutputStream os = urlConnection.getOutputStream();
                os.write(content.getBytes());
                os.flush();
                os.close();
            }
            
            if (urlConnection.getResponseCode() == 200) {
                // 获取响应的输入流对象
                if(sessionId==null||"".equals(sessionId)){
                    String session_value = urlConnection.getHeaderField("Set-Cookie");  
                    sessionId = session_value.split(";")[0];
                }else{
                    String session_value = urlConnection.getHeaderField("Set-Cookie");
                    if(session_value!=null){
                        String newsessionId = session_value.split(";")[0];
                        if(!newsessionId.equals(sessionId)){
                            return "4";
                        }
                    }
                }
                InputStream is = urlConnection.getInputStream();
                // 创建字节输出流对象
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                // 定义读取的长度
                int len = 0;
                // 定义缓冲区
                byte buffer[] = new byte[1024];
                // 按照缓冲区的大小,循环读取
                while ((len = is.read(buffer)) != -1) {
                    // 根据读取的长度写入到os对象中
                    baos.write(buffer, 0, len);
                }
                // 释放资源
                is.close();
                baos.close();
                // 返回字符串
                result = new String(baos.toByteArray());
                
            } else {
                result="0";
            }
        }catch(Exception e){
            e.printStackTrace();
            result="0";
        }finally {
            if(urlConnection!=null){
                urlConnection.disconnect();
            }
        }
        return result;
    }
    public static String doPost(String urlStr, ContentValues params){
        HttpURLConnection urlConnection=null;
        String result="";
        try {
            // 根据地址创建URL对象
            StringBuffer strUrl = new StringBuffer("http://" + ip + ":" + port + "/");
            strUrl.append(urlStr);
            URL url = new URL(strUrl.toString());
            // 根据URL对象打开链接
            urlConnection = (HttpURLConnection) url
                    .openConnection();
            if(urlConnection==null){
                return "0";
            }
            // 设置请求的方式
            urlConnection.setRequestMethod("POST");
            if(sessionId!=null||!"".equals(sessionId)){
                urlConnection.setRequestProperty("Cookie", sessionId);
            }
            urlConnection.setUseCaches(false);
            // 设置请求的超时时间
            urlConnection.setReadTimeout(18000);
            urlConnection.setConnectTimeout(18000);
            // 传递的数据
            StringBuffer data=new StringBuffer();
            for (Entry entry : params.valueSet()) {
                data.append(URLEncoder.encode(entry.getKey(),"utf-8")+"="+URLEncoder.encode(entry.getValue().toString(),"UTF-8")+"&");
            }
            data.deleteCharAt(data.length()-1);
            String content=data.toString();
            // 设置请求的头
            urlConnection.setRequestProperty("Connection", "keep-alive");
            urlConnection.setRequestProperty("Charset", "utf-8");
            // 设置请求的头
            urlConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            // 设置请求的头
            urlConnection.setRequestProperty("Content-Length",
                    String.valueOf(content.getBytes().length));
            // 设置请求的头
            urlConnection
                    .setRequestProperty("User-Agent",
                            "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
            urlConnection.setDoOutput(true); // 发送POST请求必须设置允许输出
            urlConnection.setDoInput(true); // 发送POST请求必须设置允许输入
                                            //setDoInput的默认值就是true
            //获取输出流
            OutputStream os = urlConnection.getOutputStream();
            os.write(content.getBytes());
            os.flush();
            os.close();
            if (urlConnection.getResponseCode() == 200) {
                // 获取响应的输入流对象
                if(sessionId==null||"".equals(sessionId)){
                    String session_value = urlConnection.getHeaderField("Set-Cookie");  
                    sessionId = session_value.split(";")[0];
                }else{
                    String session_value = urlConnection.getHeaderField("Set-Cookie");  
                    if(session_value!=null){
                        String newsessionId = session_value.split(";")[0];
                        if(!newsessionId.equals(sessionId)){
                            return "4";
                        }
                    }
                }
                InputStream is = urlConnection.getInputStream();
                // 创建字节输出流对象
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                // 定义读取的长度
                int len = 0;
                // 定义缓冲区
                byte buffer[] = new byte[1024];
                // 按照缓冲区的大小,循环读取
                while ((len = is.read(buffer)) != -1) {
                    // 根据读取的长度写入到os对象中
                    baos.write(buffer, 0, len);
                }
                // 释放资源
                is.close();
                baos.close();
                // 返回字符串
                result = new String(baos.toByteArray());
                
            } else {
                result="0";
            }
        }catch(Exception e){
            e.printStackTrace();
            result="0";
        }finally {
            if(urlConnection!=null){
                urlConnection.disconnect();
            }
        }
        return result;
    }
    public static String doPost(String urlStr,String fieldName,List fields, ContentValues params){
        HttpURLConnection urlConnection=null;
        String result="";
        try {
            // 根据地址创建URL对象
            StringBuffer strUrl = new StringBuffer("http://" + ip + ":" + port + "/");
            strUrl.append(urlStr);
            URL url = new URL(strUrl.toString());
            // 根据URL对象打开链接
            urlConnection = (HttpURLConnection) url
                    .openConnection();
            if(urlConnection==null){
                return "0";
            }
            // 设置请求的方式
            urlConnection.setRequestMethod("POST");
            if(sessionId!=null||!"".equals(sessionId)){
                urlConnection.setRequestProperty("Cookie", sessionId);
            }
            urlConnection.setUseCaches(false);
            urlConnection.setChunkedStreamingMode(0);
            // 设置请求的超时时间
            urlConnection.setReadTimeout(18000);
            urlConnection.setConnectTimeout(18000);
            
            // 设置请求的头
            urlConnection.setRequestProperty("Connection", "keep-alive");
            urlConnection.setRequestProperty("Charset", "utf-8");
            // 设置请求的头
            urlConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            // 设置请求的头
            urlConnection
                    .setRequestProperty("User-Agent",
                            "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
            urlConnection.setDoOutput(true); // 发送POST请求必须设置允许输出
            urlConnection.setDoInput(true); // 发送POST请求必须设置允许输入
                                            //setDoInput的默认值就是true
            //获取输出流
            OutputStream os = urlConnection.getOutputStream();
            // 传递的数据
            DataOutputStream dos = new DataOutputStream(os);
            if(fieldName!=null&&fields!=null){
                for(int i=0;i<fields.size();i++){
                    dos.write((fieldName+"="+URLEncoder.encode(fields.get(i),"utf-8")+"&").getBytes());
                }
            }
            if(params!=null){
                for (Entry entry : params.valueSet()) {
                    dos.write((entry.getKey()+"="+URLEncoder.encode(entry.getValue().toString(),"utf-8")+"&").getBytes());
                }
            }
            dos.flush();
            dos.close();
            os.flush();
            os.close();
            if (urlConnection.getResponseCode() == 200) {
                // 获取响应的输入流对象
                if(sessionId==null||"".equals(sessionId)){
                    String session_value = urlConnection.getHeaderField("Set-Cookie");  
                    sessionId = session_value.split(";")[0];
                }else{
                    String session_value = urlConnection.getHeaderField("Set-Cookie");  
                    if(session_value!=null){
                        String newsessionId = session_value.split(";")[0];
                        if(!newsessionId.equals(sessionId)){
                            return "4";
                        }
                    }
                }
                InputStream is = urlConnection.getInputStream();
                // 创建字节输出流对象
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                // 定义读取的长度
                int len = 0;
                // 定义缓冲区
                byte buffer[] = new byte[1024];
                // 按照缓冲区的大小,循环读取
                while ((len = is.read(buffer)) != -1) {
                    // 根据读取的长度写入到os对象中
                    baos.write(buffer, 0, len);
                }
                // 释放资源
                is.close();
                baos.close();
                // 返回字符串
                result = new String(baos.toByteArray());
            } else {
                result="0";
            }
        }catch(Exception e){
            e.printStackTrace();
            result="0";
        }finally {
            if(urlConnection!=null){
                urlConnection.disconnect();
            }
        }
        return result;
    }
    public static String doPost(String urlStr, Map params,String fileParams, File file){
        String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成
        String PREFIX = "--", LINE_END = "\r\n";
        String CONTENT_TYPE = "multipart/form-data"; // 内容类型
        HttpURLConnection urlConnection=null;
        String result="";
        try {
            StringBuffer strUrl = new StringBuffer("http://" + ip + ":" + port + "/");
            strUrl.append(urlStr);
            URL url = new URL(strUrl.toString());
            urlConnection = (HttpURLConnection) url.openConnection();
            if(urlConnection==null){
                return "0";
            }
            urlConnection.setReadTimeout(18000);
            urlConnection.setConnectTimeout(18000);
            urlConnection.setRequestMethod("POST"); //请求方式
            if(sessionId!=null||!"".equals(sessionId)){
                urlConnection.setRequestProperty("Cookie", sessionId);
            }
            urlConnection.setRequestProperty("Charset", "utf-8");//设置编码
            urlConnection.setRequestProperty("connection", "keep-alive");
            urlConnection.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
            urlConnection.setDoInput(true); //允许输入流
            urlConnection.setDoOutput(true); //允许输出流
            urlConnection.setUseCaches(false); //不允许使用缓存
            urlConnection.setChunkedStreamingMode(0);
            if(file!=null) {
                /** * 当文件不为空,把文件包装并且上传 */
                OutputStream outputSteam=null;
                try{
                    outputSteam=urlConnection.getOutputStream();
                }catch(Exception e){
                    if(urlConnection!=null){
                        urlConnection.disconnect();
                    }
                    return "0";
                }
                DataOutputStream dos = new DataOutputStream(outputSteam);
                StringBuffer sb = new StringBuffer();
                sb.append(LINE_END);
                if(params!=null){//根据格式,开始拼接文本参数
                    for (Map.Entry entry : params.entrySet()) {    
                        sb.append(PREFIX);    
                        sb.append(BOUNDARY);    
                        sb.append(LINE_END);    
                        sb.append("Content-Disposition: form-data; name=\""    
                                + entry.getKey() + "\"" + LINE_END);    
                        sb.append("Content-Type: text/plain; charset=" + "utf-8" + LINE_END);    
                        sb.append("Content-Transfer-Encoding: 8bit" + LINE_END);    
                        sb.append(LINE_END);    
                        sb.append(entry.getValue());    
                        sb.append(LINE_END);    
                    }    
                }
                sb.append(PREFIX);//开始拼接文件参数
                sb.append(BOUNDARY); sb.append(LINE_END);
                /**
                 * 这里重点注意:
                 * name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
                 * filename是文件的名字,包含后缀名的 比如:abc.png
                 */
                sb.append("Content-Disposition: form-data;name=\"" + fileParams  
                        + "\";filename=\"" + file.getName()+"\""+LINE_END);
                sb.append("Content-Type: application/octet-stream; charset="+"utf-8"+LINE_END);
                sb.append(LINE_END);
                //写入文件数据
                dos.write(sb.toString().getBytes());
                InputStream is = new FileInputStream(file);
                byte[] bytes = new byte[1024];
                long totalbytes = file.length();
                int len = 0;
                while((len=is.read(bytes))!=-1){
                    dos.write(bytes, 0, len);
                }
                is.close();
                dos.write(LINE_END.getBytes());
                byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();
                dos.write(end_data);
                dos.flush();
                dos.close();
                outputSteam.flush();
                outputSteam.close();
                /**
                 * 获取响应码 200=成功
                 * 当响应成功,获取响应的流
                 */
                if (urlConnection.getResponseCode() == 200) {
                    // 获取响应的输入流对象
                    if(sessionId==null||"".equals(sessionId)){
                        String session_value = urlConnection.getHeaderField("Set-Cookie");  
                        sessionId = session_value.split(";")[0];
                    }else{
                        String session_value = urlConnection.getHeaderField("Set-Cookie");
                        if(session_value!=null){
                            String newsessionId = session_value.split(";")[0];
                            if(!newsessionId.equals(sessionId)){
                                return "4";
                            }
                        }
                    }
                    InputStream isN = urlConnection.getInputStream();
                    // 创建字节输出流对象
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    // 定义读取的长度
                    int lenN = 0;
                    // 定义缓冲区
                    byte buffer[] = new byte[1024];
                    // 按照缓冲区的大小,循环读取
                    while ((lenN = isN.read(buffer)) != -1) {
                        // 根据读取的长度写入到os对象中
                        baos.write(buffer, 0, lenN);
                    }
                    // 释放资源
                    isN.close();
                    baos.close();
                    // 返回字符串
                    result = new String(baos.toByteArray());
                    
                } else {
                    result="0";
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            result="0";
        } catch (IOException e) {
            e.printStackTrace();
            result="0";
        }catch (Exception e) {
            e.printStackTrace();
            result="0";
        }finally {
                if(urlConnection!=null){
                urlConnection.disconnect();
            }
        }
        return result;
    }
    public static Bitmap getCodeImage(String path) {
            HttpURLConnection urlConnection=null;
            Bitmap bitmap=null;
            try {
                // 根据地址创建URL对象
                StringBuffer CodeImageUrl = new StringBuffer("http://" + ip + ":" + port);
                if (path != null && !path.equals("")) {
                    CodeImageUrl.append("/" + path);
                }
                CodeImageUrl.append("/imgCode?rnd=" + Math.random());
                URL url = new URL(CodeImageUrl.toString());
                // 根据URL对象打开链接
                urlConnection = (HttpURLConnection)   
                        url.openConnection();  
                urlConnection.setRequestMethod("GET");
                urlConnection.setUseCaches(false);
                urlConnection.connect();  
                InputStream is = urlConnection.getInputStream();  
                bitmap = BitmapFactory.decodeStream(is);  
                is.close();  
            }catch(Exception e){
                e.printStackTrace();
            }finally {
                if(urlConnection!=null){
                    urlConnection.disconnect();
                }
            }
            return bitmap;
       }
}



注意:本文归作者所有,未经作者允许,不得转载