zoukankan      html  css  js  c++  java
  • GET、POST请求封装类

    okHttp3封装Get、Postff调用,使用之前先加入okHttp3的依赖:

    implementation 'com.squareup.okhttp3:okhttp:3.4.1' //okhttp3
    

    然后在AndroidManifest.xml中加入网络权限

    <uses-permission android:name="android.permission.INTERNET" />
    

     okHttp3的封装类:

    package com.example.recycleview2.http;
    import android.util.Log;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.Cookie;
    import okhttp3.CookieJar;
    import okhttp3.Headers;
    import okhttp3.HttpUrl;
    import okhttp3.MediaType;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;
    
    public class OkHttp {
    
        private static MediaType mediaType;
    
        public static String cookieTest = ""; //Cookie
    
        //登录
        public static void Login(final String url, String number, String password, Callback callback){
            final HashMap<String, List<Cookie>> cookie = new HashMap<>();
            CookieJar cookieJar = new CookieJar() {
                @Override
                public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
                    cookie.put(url.host(),cookies);
                }
    
                @Override
                public List<Cookie> loadForRequest(HttpUrl url) {
                    List<Cookie> cookies = cookie.get(url.host());
                    return cookies != null ? cookies : new ArrayList<Cookie>();
                }
            };
            try {
                final OkHttpClient client = new OkHttpClient.Builder().cookieJar(cookieJar).build();
                JSONObject jsonObject =new JSONObject();
                jsonObject.put("number",number.toString());
                jsonObject.put("password",password.toString());
                mediaType = MediaType.parse("application/json;charset=utf-8");
                RequestBody requestBody = RequestBody.create(mediaType,jsonObject.toString());
                final Request request = new Request.Builder().url(url).post(requestBody).build();
                //保存Cookie登录
                client.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
    
                    }
    
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if(response.code() == 200){
                            Headers headers = response.headers();
                            HttpUrl loginUrl = request.url();
                            List<Cookie> cookies = Cookie.parseAll(loginUrl,headers);
                            if(!cookies.isEmpty()){
                                Log.d("Cookies:",cookies + "");
                                client.cookieJar().saveFromResponse(loginUrl,cookies);
                            }
                            StringBuilder cookieStr = new StringBuilder();
                            List<Cookie> cookies1 = client.cookieJar().loadForRequest(request.url());
                            for (Cookie cookie : cookies){
                                cookieStr.append(cookie.name()).append("=").append(cookie.value() + ";");
                            }
                            Log.d("响应状态:","成功");
                            cookieTest = cookieStr.toString();
                        }
                    }
                });
                client.newCall(request).enqueue(callback); //返回给调用Login的数据
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        //get请求,传参 不需要cookie
        public static void GetBiographyValue(String url, String name, String value, Callback callback){
            OkHttpClient client = new OkHttpClient();
            Request.Builder builder = new Request.Builder();
            HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
            urlBuilder.addQueryParameter(name,value);
            builder.url(urlBuilder.build());
            Request request = builder.build();
            client.newCall(request).enqueue(callback);
        }
    
        //get请求,不需传参 需传cookie
        public static void GetCookieValue(String url, String Cookie, Callback callback){
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder().url(url)
                    .header("Cookie",Cookie)
                    .get().build();
            client.newCall(request).enqueue(callback);
        }
    
        //post请求,传参 需要cookie
        public static void PostBiographyCookieValue(String url, String imgUri, String Cookie, Callback callback){
            try {
                OkHttpClient client = new OkHttpClient();
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("uri", imgUri);
                jsonObject.put("type", "multipart/form-data");
                jsonObject.put("name", "image.jpg");
                MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
                RequestBody requestBody = RequestBody.create(mediaType, jsonObject.toString());
                final Request request = new Request.Builder().url(url).header("Cookie",Cookie).post(requestBody).build();
                client.newCall(request).enqueue(callback);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        //get请求 不需传参 不需cookie
        public static void GetValue(String address, Callback callback) {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder().url(address).build();
            client.newCall(request).enqueue(callback);
        }
    }
    
  • 相关阅读:
    使用Git遇到的问题及解决方案(初级)
    巧记前端易混淆的英文语法
    编程助手JavaScript学习库-DOM笔记
    编程助手JavaScript学习库-面向对象编程笔记
    JS原始类型:数值的运用技巧
    这题目有毒之干不过codewars的OJ系统(一)
    Javascript运算符进阶指南
    Qt:During startup program exited with code 0xc0000135
    QT 消息处理机制
    Windows环境 和 Linux环境下搭建Qt开发环境
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11451896.html
Copyright © 2011-2022 走看看