Http请求工具-OkHttp用法

OKHttp介绍

okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。okhttp有自己的官网,官网网址:OKHttp官网如果想了解原码可以在github上下载,地址是:https://github.com/square/okhttp在AndroidStudio中使用不需要下载jar包,直接添加依赖即可:compile‘com.squareup.okhttp3:okhttp:3.4.1’

在开发中我们会经常需要用到http请求,这里简单介绍一个http请求工具okHttp的用法

1、导入jar包

 
     com.squareup.okhttp3
     okhttp
     3.9.1
 

2、为了便于以后使用,这里封装一个OkHttpUtil的工具类

get请求

 /**
  * get请求
  * @param url 请求地址
  * @return 请求结果
  */
 public String doGet(String url) {
     OkHttpClient okHttpClient = new OkHttpClient();
     Request request = new Request.Builder().url(url).build();
     Call call = okHttpClient.newCall(request);
    try {
        Response response = call.execute();
        return response.body().string();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
 }

post请求分为两种,From表单形式和JSON参数形式

  • Form表单形式

 /**
  * 表单形式post请求
  * @param url 请求地址
  * @param map post请求参数
  * @return 请求结果
  */
 public String doPost(String url,Map map){
     OkHttpClient client = new OkHttpClient();
     //构建一个formBody builder
     FormBody.Builder builder = new FormBody.Builder();
     //循环form表单,将表单内容添加到form builder中
     for (Map.Entry entry : map.entrySet()) {
         String key = entry.getKey();
         String value = entry.getValue();
         builder.add(key,value);
     }
     //构建formBody,将其传入Request请求中
     FormBody body = builder.build();
     Request request = new Request.Builder().url(url).post(body).build();
     Call call = client.newCall(request);
     //返回请求结果
     try {
         Response response = call.execute();
         return response.body().string();
     } catch (IOException e) {
         e.printStackTrace();
     }
     return null;
 }
  • JSON参数形式
 /**
  * Json body形式的post请求
  * @param url 请求地址
  * @return 请求结果
  */
 public String doPost(String url,String json){
     OkHttpClient client = new OkHttpClient();
     RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-"), json);
     Request request = new Request.Builder()
             .post(body)
             .url(url)
             .build();
     Call call = client.newCall(request);
     //返回请求结果
     try {
         Response response = call.execute();
         return response.body().string();
     } catch (IOException e) {
         e.printStackTrace();
     }
     return null;
 }

 

你可能感兴趣的:(2-------Java)