Android 的http通信(原生代码)

来源:互联网 发布:java应用服务器 编辑:程序博客网 时间:2024/06/04 15:21

Android的http通信,封装了一个Android与服务器进行http通信的类,代码实现和调用方法如下:
1、新建NetWork对象 NetWork netWork=new NetWork();
2、将即将上传的参数封装到一个Map对象中 ,例如

Map<String,String> map=new HashMap<String,String>();map.put("phone","phonevalue");map.put("password","passwordValue");

3、执行netWork对象的doGet()或doPost()方法

String result=netWork.doGet(map,URLValues);

NetWord.java

public class NetWork {    public String login(Map<String,String> map,String requestURL){        String result="";        try{            URL url=new URL(requestURL);            HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();            urlConn.setDoInput(true);//设置输入流采用字节流            urlConn.setDoOutput(true);//设置输出流采用字节流            urlConn.setRequestMethod("POST");            urlConn.setUseCaches(false);//设置缓存            // 设置请求的超时时间            urlConn.setReadTimeout(5000);            urlConn.setConnectTimeout(5000);            urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置methed参数            urlConn.setRequestProperty("Charset", "utf-8");            urlConn.connect();//链接既往服务器发送消息            PrintWriter pw=new PrintWriter(urlConn.getOutputStream());            StringBuffer buffer=new StringBuffer();            for(Map.Entry<String, String> entry : map.entrySet()){                buffer.append(URLEncoder.encode(entry.getKey(), "utf-8") + "=" + URLEncoder.encode(entry.getValue(), "utf-8") + "&");            }            pw.print(buffer);            pw.flush();            pw.close();            InputStream inputStream=urlConn.getInputStream();            int httpCode=urlConn.getResponseCode();            if(httpCode==200){                byte[] bufferBytes = new byte[1];                BufferedReader bf=new BufferedReader(new InputStreamReader(inputStream, Charset.forName("utf-8")));                //定义String类型用于储存单行数据                String line=null;                //创建StringBuffer对象用于存储所有数据                StringBuffer sb=new StringBuffer();                while((line=bf.readLine())!=null){                    sb.append(line);                }                result=sb.toString();            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }    public String doGet(Map<String,String> map,String requestUrl){        String result="";        try{            StringBuffer buffer=new StringBuffer("?");            if(map!=null)            for(Map.Entry<String,String> mapItem:map.entrySet() ){                buffer.append(URLEncoder.encode(mapItem.getKey(), "utf-8")+"="+URLEncoder.encode(mapItem.getValue(), "utf-8")+"&");            }            URL url=new URL(requestUrl+buffer.toString());            HttpURLConnection conn=(HttpURLConnection)url.openConnection();            conn.setDoOutput(false);            conn.setDoInput(true);            conn.setRequestMethod("GET");            conn.setUseCaches(false);            conn.setConnectTimeout(5000);            conn.setReadTimeout(5000);            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置methed参数            conn.setRequestProperty("Charset", "utf-8");            conn.connect();//链接既往服务器发送消息            InputStream inputStream=conn.getInputStream();            int httpCode=conn.getResponseCode();            if(httpCode==200){                byte[] bufferBytes = new byte[1];                BufferedReader bf=new BufferedReader(new InputStreamReader(inputStream, Charset.forName("utf-8")));                //定义String类型用于储存单行数据                String line=null;                //创建StringBuffer对象用于存储所有数据                StringBuffer sb=new StringBuffer();                while((line=bf.readLine())!=null){                    sb.append(line);                }                return sb.toString();            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }    public String doPost(Map<String,String> map,String requestURL){        String result="";        try{            URL url=new URL(requestURL);            HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();            urlConn.setDoInput(true);//设置输入流采用字节流            urlConn.setDoOutput(true);//设置输出流采用字节流            urlConn.setRequestMethod("POST");            urlConn.setUseCaches(false);//设置缓存            // 设置请求的超时时间            urlConn.setReadTimeout(5000);            urlConn.setConnectTimeout(5000);            urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置methed参数            urlConn.setRequestProperty("Charset", "utf-8");            urlConn.connect();//链接既往服务器发送消息            PrintWriter pw=new PrintWriter(urlConn.getOutputStream());            StringBuffer buffer=new StringBuffer();            if(map!=null)            for(Map.Entry<String, String> entry : map.entrySet()){                buffer.append(URLEncoder.encode(entry.getKey(), "utf-8") + "=" + URLEncoder.encode(entry.getValue(), "utf-8") + "&");            }            pw.print(buffer);            pw.flush();            pw.close();            InputStream inputStream=urlConn.getInputStream();            int httpCode=urlConn.getResponseCode();            if(httpCode==200){                byte[] bufferBytes = new byte[1];                BufferedReader bf=new BufferedReader(new InputStreamReader(inputStream, Charset.forName("utf-8")));                //定义String类型用于储存单行数据                String line=null;                //创建StringBuffer对象用于存储所有数据                StringBuffer sb=new StringBuffer();                while((line=bf.readLine())!=null){                    sb.append(line);                }                result=sb.toString();            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }}
0 0
原创粉丝点击