HTTP协议的应用与总结
2012-06-28 20:10
387 查看
最近在看Http协议等网络部分的知识,网络通而信可谓android中比较重要的部分了,而实现Http通信的最重要的莫过于俩个接口:HttpURLConnection和HttpClient。一般情况下俩个接口简单的访问网络。Apache提供的是后者,以后网络部分估计HttpClient用的较多一下。而且实现较容易理解一些。以下是源代码:首先实现的HttpURLConnection的GET方法,下面俩个接口的俩个方法即GET和POST均会实现。。。
总之而言,在做项目的过程中POST方法使用的较多,因其保密性较好,不过GET用的也较多,所以看个人喜好了。在学习这一块内容的时候要好好把握俩个接口的使用法,这样才能不容易记混!!
public class BaiscHttpGetWay { private String path1=null; private String resultData=null; public String getpath(String path) throws Exception { this.path1=path; URL url=new URL(path1); System.out.println(path1); if(url!=null) { //由于get的方法相比较容易就不做解释了 HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.setDoInput(true); conn.setRequestMethod("GET"); conn.setConnectTimeout(5*1000); if(conn.getResponseCode()==200) { InputStream is=conn.getInputStream(); resultData=getresultdata(is); System.out.println(resultData); } conn.disconnect(); } return resultData; } private String getresultdata(InputStream is) throws Exception { // TODO Auto-generated method stub ByteArrayOutputStream out=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=-1; while((is.read(buffer))!=-1) { out.write(buffer,0,len); } byte[] data=out.toByteArray(); return new String(data); } } 然后是POSt方法的实现: public class BasicHttpPostWay { private String path1=null; private String resultData=null; public String getpath(String path,String param)throws Exception { //传递是以二进制传递字符串无法完成此操作所以用byte数组传递也可以用其他方法 byte[] data=param.getBytes(); this.path1=path; URL url=new URL(path1); System.out.println(path1); if(url!=null) { HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //这里是Post请求,所以就设置为true conn.setDoInput(true); conn.setDoOutput(true); //设置请求Post conn.setRequestMethod("POST"); conn.setConnectTimeout(5*1000); //由于Post请求不能使用缓存 conn.setUseCaches(false); conn.setInstanceFollowRedirects(true); //设置其他畅通设置格式以及数组长度,不过若你不用数组直接用字符串的话 //查了一下可以用URLEcode.encode进行操作 conn.setRequestProperty("Connection","Keep-Alive" ); conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Content-Length",String.valueOf(data) ); //配置本次连接Content-type,后面参数正文为Orlencoded编码过的form参数具体是啥我也不知到反正为固定格式 conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded" ); //连接,从打开连接即openConnection到connect之间必须先配好 conn.connect(); //查了一下大部分Post都是用DataOutputStream完成此操作 DataOutputStream out=new DataOutputStream(conn.getOutputStream()); out.write(data); //刷新,关闭 out.flush(); out.close(); if(conn.getResponseCode()==200) { InputStream is=conn.getInputStream(); //定义一个方法用来转换流的内容 resultData=getresultData(is); System.out.println(resultData); } conn.disconnect(); } return resultData; } private String getresultData(InputStream is) throws Exception { // TODO Auto-generated method stub ByteArrayOutputStream out=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=-1; while((is.read(buffer))!=-1) { out.write(buffer,0,len); } byte[] data=out.toByteArray(); return new String(data); } } 接下来是HttpClient借口中方法的实现: 首先是GET方法: public class ApacheHttpGetWay { private String path1=null; private String resultDataString=null; public String getpath(String path)throws Exception { this.path1=path; //HttpGet的连接对象 HttpGet httpGet=new HttpGet(path1); //声明一个HttpClient的对象 HttpClient httpClient=new DefaultHttpClient(); //执行请求并用HttpResponse接受请求过来的内容 HttpResponse httpResponse=httpClient.execute(httpGet); //判断请求是否成功 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK) { //取得返回的字符串 resultDataString=EntityUtils.toString(httpResponse.getEntity()); System.out.println(resultDataString); } else { System.out.println("it is null!!!"); } return resultDataString; } } //然后是POST方法 public class ApacheHttpPostWay { private String path1=null; private String resultDataString=null; public String getpath(String path,List<NameValuePair> param)throws Exception { this.path1=path; //设置连接对象即连接请求 HttpPost post=new HttpPost(path1); //将参数加入请求里面定死的 post.setEntity(new UrlEncodedFormEntity(param,HTTP.UTF_8)); //获取HttpClient的对象 HttpClient httpClient=new DefaultHttpClient(); //执行请求并将字符返回到httpResponse HttpResponse httpResponse=httpClient.execute(post); //判断是否连接成功格式定死的 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK) { //返回字符串格式定死的 resultDataString=EntityUtils.toString(httpResponse.getEntity()); System.out.println(resultDataString); } else { System.out.println("it is null!!!"); } return resultDataString; } }
总之而言,在做项目的过程中POST方法使用的较多,因其保密性较好,不过GET用的也较多,所以看个人喜好了。在学习这一块内容的时候要好好把握俩个接口的使用法,这样才能不容易记混!!
相关文章推荐
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
- http和socket协议应用场合总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
- HTTP协议理解与应用总结
- VC/MFC关于Http协议的应用总结
- HTTP协议理解与应用总结
- HTTP协议理解与应用总结
- HTTP协议学习总结:
- iOS开发中HTTP协议的应用