安卓学习笔记5——网络编程

一、HttpUrlConnection

1.请求数据:get

大致步骤:

			URL url=new URL("https://www.baidu.com");
//            创建httpurlconnection对象
            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            int code =conn.getResponseCode();
             if (code==200){
             InputStream in=conn.getInputStream();}

2.提交数据:get/post

(1)HTTP协议:查看网络连接过程中http协议内容

包含请求内容和响应内容

请求内容
在这里插入图片描述

  • 完整的请求格式包含:请求行、头信息、请求体
  1. 请求行:请求中第一行信息—-包括三个部分请求方式、资源路径、HTTP协议版本
    例如:GET/HTTP/1.1
    HTTP请求方式有几种:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
    常用两种:GET、POST

  2. 头信息:包含一些键值对,描述请求的信息
    Accept:text/html,image/——-客户端可以接收文件类型text/htmlTl文件image/任意格式图片
    Accept-Charset:ISO-8859-1-----客户端可以识别编码字行集
    Accept-Encoding:gzip–——-客户端可以识别压缩数据格式gzip是一种压缩格式
    Accept-Language:zh-cn——-客户端浏览器语高,Host:www.itcast.com:80----访问服务器地址

  3. 请求体:传输的数据

响应内容
在这里插入图片描述

(2)Post与Get方式提交数据的区别

  1. Get方式: url地址后携带数据有大小限制1K(http协议是4k),提交数据在url上显示;以?分隔url和参数,参数采用键值对格式,多个参数使用&符合分隔

如:http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD&rsv_spt=1&rsv_iqid=0xa13e92b20002bf94&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_dl=tb&rsv_enter=0

  1. POST 数据在请求体中,不在url上显示,没有数据大小跟制
    username=zhangsan 请求体和头信息直接存在一个空行

(3)使用示例

  • get
    与请求数据无异,差别在于url地址
  • post
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded")
conn.setRequestProperty("Content-Length",data.length()+"");
conn.setDoOutput(true)//设置一个标记允许输出
conn.getoutputStream().write(data.getBytes());

3.乱码问题

客户端与服务器端编码方式不同
安卓默认编码方式:utf-8

对于服务器传输给客户端的数据,按照服务器的编码方式解码即可
对于传输给服务器的数据,比如中文的话,可以先惊醒urlencode

二、httpclient

开源项目,被封装到android api中

get
在这里插入图片描述
post
在这里插入图片描述
在这里插入图片描述

三、AsyncHttpClient

封装了子线程,handler等

get
在这里插入图片描述

post
在这里插入图片描述

四、三种方式的比较

  1. httpurlconnection:可以自己封装请求头信息,定制
  2. httpclient(了解,没有人用)
  3. 开源项目(asynchttpclient):通用,方便
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章