Giter Site home page Giter Site logo

jeasonlzy / okhttp-okgo Goto Github PK

View Code? Open in Web Editor NEW
10.6K 387.0 2.5K 82.87 MB

OkGo - 3.0 震撼来袭,该库是基于 Http 协议,封装了 OkHttp 的网络请求框架,比 Retrofit 更简单易用,支持 RxJava,RxJava2,支持自定义缓存,支持批量断点下载管理和批量上传管理功能

License: Apache License 2.0

Java 100.00%
okhttp okgo restful rxjava rxjava2 http

okhttp-okgo's People

Contributors

jeasonlzy avatar jessyancoding avatar jiezili avatar readmecritic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

okhttp-okgo's Issues

用户取消网络请求。

当用户发起一次网络请求的时候,突然不然继续请求取消盖茨请求的时候,会执行哪个方法 @jeasonlzy0216

超时不走fail 和error

你好~,我最近是在使用你的这个框架,做得很好。但是目前有一个问题。就是超时的时候 没有办法捕获到异常。希望作者能够解决下

Post方式提大量数据的时候会卡MainUIThread

看代码,在BaseRequest里的251行generateMultipartRequestBody()这个方法,如果字段的数据量太大(比如3Mb的数据),会卡UI线程好几秒。暂时只能想到直接在.params(这里直接传FormBody)添加重载,少做一次转换。能优化就优化下吧,虽然这种情况非常小,只有我现在有这个需求。

取消网络请求问题

你好我想请问一下,我在使用网络请求时,网络请求正在进行,我点击了一下手机的返回键,正在加载的对话框消失了,但是我的网络请求还在后台进行,是这样吗?

关于下载的进度信息来源问题

你好!
在DownloadTask.java里面看你的下载进度信息来源是获取response.body().byteStream()之后的读取进度,这个读取进度等价于下载进度吗?我的意思是这个response不是client.execute之后一次性返回的总数据吗?
我在另外的资料里面听到的说法是给client添加一个networkIterceptor拦截器,在拦截器的intercept方法里,把返回的Response中的body替换成自定义的ResponseBody
是不是版本问题呢?

建议去掉ormlite

作为第三方库,再引入其它第三方库,会变大。如果项目又用了其它orm的话更大了

加了cancelTag(context),BaseRequest还是回调了OnError方法

场景:进入一个页面获取数据,tag是传的activity.在网络还没有回调的时候,迅速退出Activity。这个时候BaseRequest回调了OnError,抛出了sokect异常。我就捕获了这个异常回了主线程,并弹出了Dialog.Dialog的Context就是Activity.但这个时候Activity已经不存在了。就出现了空指针。
我的问题是:是不是可以在CallBack方法里有什么判断让这个异常不回到主线程?或者说是我用法没有对?谢谢

Get请求在拼接地址多了& 符号

在HttpUtils的createUrlFromParams方法里
public static String createUrlFromParams(String url, Map<String, List<String>> params) { try { StringBuilder sb = new StringBuilder(); sb.append(url); if (url.indexOf('&') > 0 || url.indexOf('?') > 0) sb.append("&"); else sb.append("?"); for (Map.Entry<String, List<String>> urlParams : params.entrySet()) { List<String> urlValues = urlParams.getValue(); for (String value : urlValues) { //对参数进行 utf-8 编码,防止头信息传中文 String urlValue = URLEncoder.encode(value, "UTF-8"); sb.append(urlParams.getKey()).append("=").append(urlValue).append("&"); } } sb.deleteCharAt(sb.length() - 1); return sb.toString(); } catch (UnsupportedEncodingException e) { OkLogger.e(e); } return url; }
这句 if (url.indexOf('&') > 0 || url.indexOf('?') > 0) sb.append("&");
判断url含有 符号& 、?会加入&,是为了什么呢;

没有addNetWotkInterceptor设置入口

使用facebook的stetho得自己加个
/** 添加网络拦截器 */
public OkHttpUtils addNetWotkInterceptor(@nullable Interceptor interceptor) {
okHttpClientBuilder.addNetworkInterceptor(interceptor);
return this;
}

断网的大Bug

其一:在请求多个文件下载中,此时突然断网,没有进行失败的回调。其二:同样,在请求多个文件下载中,有几个文件下载不完整,我查看了Log,进度条到50~60后直接进行成功回调,进度条没有进入100,所以导致文件不完整。

可以增加缓存机制吗?

比如先检查本地缓存,如果没有再请求网络。或者先检查网络,如果没有再检查本地之类的

有个关于缓存的疑问

就是在CacheMode.DEFAULT下,按照标准的Http协议缓存,为什么不缓存成文件,我记得OKHttp原声就有缓存成文件的啊,难道新版本修改了??

cookie 持久化问题

貌似本次请求会默认添加上次请求的cookie,会导致本次请求添加的cookie就覆盖,
我在生成call的时候,添加了请求头cookie,但不生效,只有第一次访问生效,后面的请求抓包时发现,我的cookie根本没设置进去,而是自动添加了之前响应回来的cookie,
这是个问题~~~

session持久化

请问这个怎么能做到session持久化,我试了一下 把app进程杀死以后session就没了

关于下载框架。。。

感谢大神框架,最近有个项目会用到多线程断点续传。。。一般手机应用(360手机市场)
有如下问题
1.如果做按钮及时更新(下载,继续,暂停,安装,打开。。。),按照demo的做法,会出现进度ui无法刷新的问题(因为第一次downloadinfo都为null,自已改了一下,但是没有成功)
2.demo没有判断第三方,或者直接删掉apk的情况。。。
急。。。大神求解!

运行报错,大神帮忙看下呗,3Q

1、 Cause: com.android.dex.DexException: Multiple dex files define Lcom/lzy/okhttputils/BuildConfig;
2、Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\ZTEsoft\java\java64\jdk1.7\bin\java.exe'' finished with non-zero exit value 2

普通Post,直接上传Json类型的文本。java.lang.IllegalStateException: closed

如题。使用StringCallback,然后在onResponse回调中使用response.body().string();报错如下:

05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err: java.lang.IllegalStateException: closed
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at okhttp3.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:378)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at okio.Buffer.writeAll(Buffer.java:956)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at okio.RealBufferedSource.readByteArray(RealBufferedSource.java:92)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at okhttp3.ResponseBody.bytes(ResponseBody.java:83)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at okhttp3.ResponseBody.string(ResponseBody.java:109)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at com.uiho.deviceinfouploader.proj.activity.MainActivity$3.onResponse(MainActivity.java:221)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at com.uiho.deviceinfouploader.proj.activity.MainActivity$3.onResponse(MainActivity.java:216)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at com.lzy.okhttputils.request.BaseRequest$4.run(BaseRequest.java:454)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at android.os.Handler.handleCallback(Handler.java:815)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:104)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at android.os.Looper.loop(Looper.java:194)
05-10 12:28:47.081 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5773)
05-10 12:28:47.082 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
05-10 12:28:47.082 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
05-10 12:28:47.082 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
05-10 12:28:47.082 12630-12630/com.uiho.deviceinfouploader.proj W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:799)

请问混淆时需要的keep语句

请问混淆时需要的keep语句?

okhttputils

-dontwarn com.lzy.okhttputils.**
-keep class com.lzy.okhttputils.*{;}

okhttp

-dontwarn okhttp3.**
-keep class okhttp3.*{;}

okio

-dontwarn okio.**
-keep class okio.*{;}

关于设置全局公共参数 .addCommonParams(params);的问题

设置全局公共参数 .addCommonParams(params); 调用以下
public void put(HttpParams params) {
if (params != null) {
if (params.urlParamsMap != null && !params.urlParamsMap.isEmpty()) urlParamsMap.putAll(params.urlParamsMap);
if (params.fileParamsMap != null && !params.fileParamsMap.isEmpty()) fileParamsMap.putAll(params.fileParamsMap);
}
}
params为String键值对形式,当urlParamsMap为空时候会自动封装到fileParams中,这个判断是否有问题

更新后报错,怎么解决,很急

今天一运行代码,提示EncryptCallBack的第43行报错,getSortedMapBykey(params.urlParamsMap),需要的是一个String, 但它是一个List

如何查看历史版本号?

使用框架时,添加的依赖为使用最新,更新之后,网络请求报错,但不知道之前的历史版本是多少,因为没有做封装,改起来会比较麻烦,所以希望提供历史版本号

选择了一张6K的图片上传报错,大图没事

Caused by: java.lang.StringIndexOutOfBoundsException: length=9; regionStart=6; regionLength=-6
at java.lang.String.startEndAndLength(String.java:588)
at java.lang.String.substring(String.java:1475)
at java.net.DefaultFileNameMap.getContentTypeFor(DefaultFileNameMap.java:38)
at com.lzy.okhttputils.model.HttpParams.guessMimeType(HttpParams.java:147)
at com.lzy.okhttputils.model.HttpParams.put(HttpParams.java:91)
at com.lzy.okhttputils.model.HttpParams.put(HttpParams.java:87)
at com.lzy.okhttputils.request.BaseBodyRequest.params(BaseBodyRequest.java:41)

泛型类型与parseNetworkResponse返回类型不匹配

当T=String,在执行CallBack的parseNetworkResponse这个方法,经过处理是走:return (T) response;在BaseRequest中: T t = (T) mCallback.parseNetworkResponse(response); sendSuccessResultCallback(t, call, response, mCallback);会catch不到Stirng和response类型不匹配而crash。

是否有考虑若一个页面中有多个请求,那么回调Callback中如何区分是哪一个请求呢

private class MethodCallBack extends DialogCallback {

    public MethodCallBack(Activity activity, Class<T> clazz) {
        super(activity, clazz);
    }

    @Override
    public void onResponse(boolean isFromCache, T data, Request request, Response response) {
        handleResponse(isFromCache, data, request, response);
    }

    @Override
    public void onError(boolean isFromCache, Call call, @Nullable Response response, @Nullable Exception e) {
        super.onError(isFromCache, call, response, e);
        handleError(isFromCache, call, response);
    }
}

我想问下如何让请求重新执行一下

根据token失效,重新获取token之后让之前调用的接口重新在执行一次,如何实现呢?因为现在用了你提供的这套HTTP请求框架,所以期待作者的回复

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.