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
- Android 的http通信(原生代码)
- http客户端通信 (java原生)
- Android jni编程浅入深出之-- 与原生代码通信
- android NDK 使用JNI实现与原生代码通信
- android--原生http请求
- 随想录(一个android原生app的代码赏析)
- Android的Http网络通信
- Android原生代码与HTML5的交互
- android原生代码和html的结合
- Java(Android) Http通信
- 原生的http请求
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- Android原生库和架构层通信的socket
- Android NDK开发篇(四):Java与原生代码通信(原生方法声明与定义与数据类型)
- Android开发笔记(六十三)HTTP访问的通信方式
- 《深入理解Java虚拟机》读书笔记2
- Hyper-v虚拟机的网络和文件共享
- 关于sitemesh框架的学习
- shell基础(注意事项)
- 《JVM学习系列》一.Java运行时内存区域介绍.md
- Android 的http通信(原生代码)
- 传输数据时部分字符转换为Unicode转义字符
- 关于“没有指定的类型匹配的重载函数”问题的解决
- 在Mac(Unix)下Python交互式Tab键补全实现
- Android Fragment切换
- com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException
- 洛谷 P1041 [NOIP2003 T4] 传染病控制
- 什么是load average
- jqGird错误“decimalSeparator”的解决办法