Android 的http通信(原生代码)

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

转载于:https://my.oschina.net/nandecanghai123/blog/1529308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值