http怎么加入超时和代理

 

11.http怎么加入超时和代理

转载请标明出处: 

http://blog.csdn.net/yujun411522/article/details/46226107

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

     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. 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.setRequestMethod("POST");
      //连接
     con.connec();
     //返回状态码
     int response = con.getResponseCode();
     
      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怎么加入超时和代理(后续更新)
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值