Android 的http通信(原生代码)
16lz
2021-01-23
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
更多相关文章
- Android 中解析JSON形式的数据
- Android应用程序组件Content Provider的共享数据更新通知机制分
- Android SQLite数据库升级的问题
- android bundle 对象 序列化
- 使用SharedPreferences存储和读取数据
- Android:Content Provider数据共享
- android中usb数据通信速率慢问题解决办法
- Android sqlite 数据库操作
- Android 自定义Listview 如何绑定Sqlite数据库数据