http怎么加入超时和代理

转载请标明出处: 

http://blog.csdn.net/yujun411522/article/details/46226107
本文出自:【yujun411522的博客】


先介绍android中网络访问
11.1 android 网络访问
涉及到的几个问题:
1.android平台访问网络的API接口
a.java.net*(标准java接口):流、socket、http处理、URLConnection等。j2se网络编程中很常用。
b.Org.apache :这是apache android推展的接口,提供更多更全的功能,常用的是HttpClient
c.android.net*:进行android特有的网络编程,访问wifi

2.服务器返回给客户端的几种内容形式
html页面,内置的webkit可以很容易的解析html代码
xml/json字符串,用于查询和展示,如查询中国多少省份,天气情况等都可以使用xml或者json的方式传递 

3.android 中的网络访问可以大致分为两种:一种是基于http、一种是基于socket

11.1.1 socket通信
这一部分和j2se中基本没有区别:ServerSocketSocket
这里只做一个简单的流程,因为网络编程这一块很复杂,还涉及到多线程编程。
先看服务器端:
ServerSocket server = newServerSocket(8888);
//accept阻塞执行,也就是如果没有连接到server就一直停止在这里
socket socket = server.accept();
之后得到socket的inputstream和outputstream,分别可以读取client端发送数据以及发送给client数据。这些读写操作有可能会阻塞,所以有必要进行多线程编程操作。
再看client:
Socket socket = new Socket(hostName,8888);
同样取inputstream和outputstream来与server进行通信。

11.1.2 http通信
这一部分开发中使用的更多,大部分都是使用http请求数据,android中主要有两种方式来进行http请求:HttpURLConnectionHttpClient。先看HttpURLConnection,它的操作也和j2se中一样。
HttpURLConnection 继承URLConnection,所以很多方法都是继承URLConnection
常用方法:setReadTimeoutsetConnectTimeoussetRequestMethodsetDoInputsetDoOutput等方法。
常用的http请求方式有GET、POST。简要介绍:
1 get是将表单参数追加到action属性所指向的URL中,在URL可以看见。而post则是将表单参数放置在header中,在浏览器中无法看到。
2 关于数据流大小:get的限制是来自浏览器的限制,而post理论上不受限制。

分别使用HttpURLConnection和HttpClient进行get、post请求。
1 使用HttpURLConnection get方式请求http数据:
URL url = new URL("http://www.baidu.com?name=yujun");//这里只是做个测试
HttpURLConnection con = (HttpURLConnection)url.openConnection();
//con设置各种属性
con.setRequestMethod("GET");
//连接
con.connec();
     //返回状态码
     int response = con.getResponseCode();
     //读取数据
     InputStream in = con.getInputStream()
     //操作流和java中的操作一样,不再赘述
2 使用 HttpURLConnection post 方式请求http数据:        
     URL url = new URL("http://www.baidu.com?name=yujun");//这里只是做个测试
     HttpURLConnection con = (HttpURLConnection)url.openConnection();
     //con设置各种属性
      con.setRequestMethod("POST");
     //连接
     con.connec();
     //返回状态码
     int response = con.getResponseCode();
     
     //向out里面写收据,一般是上传文件等操作。
     OutputStream out = con.getOutputStream();
     //写完之后如果有需要可以读取服务器端响应。

     //读取数据
     InputStream in = con.getInputStream()
     //操作流和java中的操作一样,不再赘述
3 使用 HttClient get 方式请求http数据:      
 HttpClient client= newDefaultHttpClient();
      HttpGet get = new HttpGet("http://www.baidu.com");
      HttpResponse response = client.execute(get);
      InputStream in = response.getEntity().getContent
      //读写流
4 使用 HttClient Post 方式请求http数据:       
HttpClient client= newDefaultHttpClient();
      HttpPost post = new HttpPost("http://www.baidu.com");
      //设置httpEntity         
      List<NameValuePair> para = new ArrayList<NameValuePair>();
      para.add(new BasicNameValuePair("name","yujun"));
      HttpEntity entity = new UrlEncodedFormEntity(para);       
      post.setEntity(entity );

      HttpResponse response = client.execute(post);
      InputStream in = response.getEntity().getContent
     //读写流

如何实现上传文件功能(后续更新)
      
HttpURLConnection和HttpClient怎么选择?
android 2.2之前的版本中httpClient出现的bug更少,推荐使用
2.3以及以后的版本中HttURLConnection则是最佳的选择,api简单,速度快,使用压缩和缓存机制减少网络流量,效率更高  
 
11.1 android http怎么加入超时和代理(后续更新)
  


你可能感兴趣的:(http怎么加入超时和代理)