OkHttpUtils.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package okhttp3;
  2. import java.lang.reflect.Field;
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import kotlin.jvm.JvmStatic;
  6. import okhttp3.internal.cache.DiskLruCache;
  7. @SuppressWarnings("KotlinInternalInJava")
  8. public class OkHttpUtils {
  9. /**
  10. * 标签集合
  11. */
  12. @JvmStatic
  13. public static Map<Class<?>, Object> tags(Request.Builder builder) {
  14. return builder.getTags$okhttp();
  15. }
  16. /**
  17. * 通过反射返回Request的标签可变集合
  18. */
  19. @JvmStatic
  20. public static Map<Class<?>, Object> tags(Request request) throws NoSuchFieldException, IllegalAccessException {
  21. Map<Class<?>, Object> tagsOkhttp = request.getTags$okhttp();
  22. if (tagsOkhttp.isEmpty()) {
  23. Field tagsField = request.getClass().getDeclaredField("tags");
  24. tagsField.setAccessible(true);
  25. LinkedHashMap<Class<?>, Object> tags = new LinkedHashMap<>();
  26. tagsField.set(request, tags);
  27. return tags;
  28. }
  29. Field tagsField = tagsOkhttp.getClass().getDeclaredField("m");
  30. tagsField.setAccessible(true);
  31. Object tags = tagsField.get(tagsOkhttp);
  32. return (Map<Class<?>, Object>) tags;
  33. }
  34. /**
  35. * 全部的请求头
  36. */
  37. @JvmStatic
  38. public static Headers.Builder headers(Request.Builder builder) {
  39. return builder.getHeaders$okhttp();
  40. }
  41. @JvmStatic
  42. public static Headers.Builder addLenient(Headers.Builder builder, String line) {
  43. return builder.addLenient$okhttp(line);
  44. }
  45. @JvmStatic
  46. public static DiskLruCache diskLruCache(Cache cache) {
  47. return cache.getCache$okhttp();
  48. }
  49. }