Android网络请求

Android网络请求

URL:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。这4种方法
 对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

根据HTTP规范,GET用于信息获取

GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

根据HTTP规范,POST表示可能修改服务器上的资源

POST把提交的数据则放置在是HTTP包的包体中,以键值对的形式,如:value="dajak"。
OkHttp中使用GET、 POST的步骤

GET
* 首先要创建一个OkHttpClient的实例:

    OkHttpClient client = new OkHttpClient();
  • 接下来如果要发送一条HTTP请求,就必须创建一个Request对象
    Request request = new Request.Builder().build();

当然,上述的代码只是创建了一个空的Request对象,并没有什么实际的作用,我们可以在最终的build()方法之前点缀很多其他方法来丰富这个Request对象。比如可以通过url()方法来设置目标的网络地址,如下所示:

    Request request = new Request.Builder()
                .url("http://www.baidu.com")
                .build();   
  • 之后调用OkHttpClient的newCall()方法来创建一个Call对象,并调用它的excute()方法来发送请求并获取服务器返回的数据,写法如下:
    Response response = client.newCall(request).excute();
  • 其中Response就是服务器所返回的数据了我们 ,这一步我们就来获取这个数据:
    String responseData = response.body().string();

POST
这种获取数据的方式,与GET方式有一点不同,不同主要在于两个地方:
* 在创建Request对象之前,首先应该创建一个RequestBody对象:

    RequestBody requestBody = new FormBody.Builder()
                        .add("username","admin")
                        .add("password","123456")
                        .build();
  • 然后在Request.Builder中调用一下post()方法,并将RequestBody对象传入:
    Request request = new Request.Builder()
                        .URL("http://www.baidu.com")
                        .post(requestBody)
                        .build();

其它的与GET方式完全相同。

你可能感兴趣的:(android,网络,url,Android)