• [技术博客]OKhttp3使用get,post,delete,patch四种请求


    OKhttp3使用get,post,delete,patch四种请求

    1.okhttp简介

    okhttp封装了大量http操作,大大简化了安卓网络请求操作,是现在最火的安卓端轻量级网络框架。如今okhttp已经更新到了okhttp4.0, 支持Android5.0以及以上的版本,要求Java在8.0以及以上的版本。

    2.okhttp安装

    • 可以通过添加依赖进行安装

      implementation("com.squareup.okhttp3:okhttp:4.7.2")
      
    • 可以通过JAR的方式进行安装,

      https://github.com/square/okhttp/
      
    • 如果使用的是androidStudio可以在Project Structure--->Dependencies 点击“+”号选Library dependency在搜索页面分别搜okttp,okio

    3.okhttp使用

    3.1get请求

    这里提供官方给的例子

    OkHttpClient client = new OkHttpClient();
    
    String run(String url) throws IOException {
      Request request = new Request.Builder()
          .url(url)
          .build();
    
      try (Response response = client.newCall(request).execute()) {
        return response.body().string();
      }
    }
    

    3.2POST请求

    同样提供官方给的例子

    ublic static final MediaType JSON
        = MediaType.get("application/json; charset=utf-8");
    
    OkHttpClient client = new OkHttpClient();
    
    String post(String url, String json) throws IOException {
      RequestBody body = RequestBody.create(json, JSON);
      Request request = new Request.Builder()
          .url(url)
          .post(body)
          .build();
      try (Response response = client.newCall(request).execute()) {
        return response.body().string();
      }
    }
    

    3.3delete请求

    public class DeleteApi {
        private OkHttpClient client;
        public void Delete(final Handler handler, final String url, final int what){
            final String token = TokenPool.getTokenPool().UserToken;
            client = new OkHttpClient();
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    try {
                        String result = getUrl(url,token);
                        //    Log.d("TAG",result);
                        Message message1 = Message.obtain();
                        message1.what=what;
                        message1.obj = result;
                        handler.sendMessage(message1);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            }.start();
        }
        String getUrl(String url,String token) throws IOException {
            FormBody body = new FormBody.Builder().build();
            Request request = new Request.Builder()
                    .url(url)
                    .delete(body)
                    .addHeader("Authorization","Bearer "+token)
                    .build();
    
            try (Response response = client.newCall(request).execute()) {
                return response.body().string();
            }
        }
    }
    

    3.4patch请求

    public class PatchApi {
        private OkHttpClient client;
        private MediaType mediaType
                = MediaType.parse("application/json; charset=utf-8");
        public void patch(final Handler handler,final String url,final RequestBody body, final int what){
            final String token = TokenPool.getTokenPool().UserToken;
            client = new OkHttpClient();
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    try {
                        String result = getUrl(url,body,token);
                        Message message1 = Message.obtain();
                        message1.what= what;
                        message1.obj = result;
                        handler.sendMessage(message1);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            }.start();
        }
        String getUrl(String url, RequestBody body, String token) throws IOException {
            Request request = new Request.Builder()
                    .url(url)
                    .addHeader("Authorization","Bearer "+token)
                    .patch(body)
                    .build();
    
            try (Response response = client.newCall(request).execute()) {
                return response.body().string();
            }
        }
    }
    
  • 相关阅读:
    分区表的一些操作例子
    MySQL 主从复制
    使用pipeline的函数
    主键字段使用不同数据类型的简单比较
    Flashback Query笔记
    基于Liquibase的数据库持续集成
    MySQL安装
    格式化SYS_GUID()成为标准格式
    Silverlight Treeview 相关操作:加载,保存,索引节点,节点移动,模板节点
    Silverlight TreeView组件的研究[2]
  • 原文地址:https://www.cnblogs.com/miokun/p/12972961.html
Copyright © 2020-2023  润新知