关于OKHTTP 的问题请教

请教一个问题,如下代码

public class OKHttpUtil {

    public static String contentType="text/html; charset=UTF-8";
    public static int timeOunt = 30;
    public static OkHttpClient client = new OkHttpClient.Builder().readTimeout(timeOunt, TimeUnit.SECONDS).build();

    public static String sendPost(String url, Map<String, String> paramMap){

        FormBody.Builder builder = new FormBody.Builder();
        Iterator it = paramMap.keySet().iterator();
        while (it.hasNext()){
            String key = it.next().toString();
            builder.add(key,paramMap.get(key));
        }
        Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 异步发送
     * @param url
     * @param paramMap
     * @param callback
     */
    public static void sendPostAsyn(String url, Map<String, String> paramMap ,Callback callback){
        FormBody.Builder builder = new FormBody.Builder();
        Iterator it = paramMap.keySet().iterator();
        while (it.hasNext()){
            String key = it.next().toString();
            builder.add(key,paramMap.get(key));
        }
        Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build();
        Call call = client.newCall(request);
        call.enqueue(callback);
    }

}

第一次使用这个框架不是很了解,现在有2个疑问,想请教下对这个框架比较了解的朋友!
第一个疑问:
使用一个OkHttpClient 对象 在高并发时,能否即发送同步请求,又发布异步请求。如,使用
OKHttpUtil.sendPostAsyn 发送异步后,在调用OKHttpUtil。sendPost 发送同步,发送使用同一个OkHttpClient 对象。

第二个疑问
OkHttpClient 对象每次发送都要new ,还是可以像代码中初始化一个静态的一直使用

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于okhttp的取值问题
关于okhttp
请问关于okhttp的问题
请问,代码如下:以下代码出现错误提示,如图1rn导入的 okhttp的版本是 okhttp-3.4.1.jarrnrn[img=https://img-bbs.csdn.net/upload/201609/05/1473069048_952747.png][/img]rn 图1rnrn错误提示是:rnThe method [color=#FF0000]setConnectTimeout[/color](int, TimeUnit) is [color=#FF0000]undefined[/color] for the type OkHttpClientrnrnrn请问 这个问题 怎么处理呢? [color=#FF0000]需要用什么版本的okhttp jar才可以呢[/color]? 我使用的这个 okhttp-3.4.1.jar是最新的版本的了。rnrn麻烦知道的朋友帮忙回复,谢谢啦rnrnimport okhttp3.*;rnrnpublic class OkHttpUtils rnrn private static final String CHARSET_NAME = "UTF-8";rn private static final OkHttpClient mOkHttpClient = new OkHttpClient();rn static rn [color=#FF0000] mOkHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);[/color] 报错了rn rnrn。。。rn
关于OkHttp
OkHttp基本用法: OkHttpClient mOkHttpClient = new OkHttpClient(); //使用budiler模式构建Request Request mRequest = new Request.Builder().url("").build(); //将Request封装到call中 Call call = mOkHttpClient.newCall(mRe...
关于okhttp
一:回忆一下之前用过的网络请求有哪些:httpURLconnection,httpclient,xutils(xUtils 包含了很多实用的android工具。 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响… xUitls最低兼容android 2.2
关于OkHttp设置Content-Type问题
通过创建Request.Builder对象,实例化post请求对象的时候重写contentType方法设置类型。 Request.Builder builder = chain.request() .newBuilder(); builder.post(new RequestBody() {                                 @Overri
请问 关于okhttp callback 的问题
请问 , 关于以下代码的理解问题:rn通过 rnTryRequest 这个类,当运行 以下这句代码后,rnobj = OkHttpUtils.enqueue((new com.squareup.okhttp.Request.Builder()).url(Config.getUri()).post(((RequestBody) (obj))).build(), [color=#FF0000]this[/color]); 就会调用 OkHttpUtils 这个类里边的 public static Call enqueue(Request request, Callback callback)的, 当正常返回的时候,就会调用 TryRequest 类里边的:rnpublic void onResponse( final Response response) throws IOException rn Log.i(TAG, "TryRequest onResponse() reuslt" );rn rnrn我的问题是: 为什么最后可以回调 TryRequest 类里边的onResponse()这个函数呢?rn 调用这个函数obj = OkHttpUtils.enqueue((new com.squareup.okhttp.Request.Builder()).url(Config.getUri()).post(((RequestBody) (obj))).build(), [color=#FF0000]this[/color]);的时候 , 它传入的是 this 而已。 而不是 通常情况 下 rnrncall.enqueue(new Callback() 这样,这种是直接传个 callback进去的。rnrnrnrn也就是 为什么 [color=#FF0000] this 可以起到 传入callback[/color] 的作用呢? rnrn麻烦知道的朋友 帮忙回复,谢谢啦rnrnrn有两个文件:rn rn//-----以下是文件1 TryRequest 代码 rnrn[code=java]import com.squareup.okhttp.Callback;rnpublic class TryRequestrn implements Callbackrnrn。。。。rnpublic void onFailure(Call call, IOException e) rn Log.e(TAG, " TryRequest :onFailure() " );rn rnrn public void onResponse( final Response response) throws IOException rn Log.i(TAG, "TryRequest onResponse() reuslt" );rn rnrnrn public Call request(boolean flag)rn rn ......rn tryrn rn obj = getJSON(); // obj 为json ,且已经转化为 stringrn obj = RequestBody.create(JSON, ((String) (obj)));rn obj = OkHttpUtils.enqueue((new com.squareup.okhttp.Request.Builder()).url(Config.getUri()).post(((RequestBody) (obj))).build(), this);rn rn catch (Exception exception)rn rn exception.printStackTrace();rn return null;rn rn return ((Call) (obj));rn rnrnrn[/code]rnrn// 以下是文件2代码 OkHttpUtils .javarnrn[code=java]public class OkHttpUtils rn private static final String TAG = "OkHttpUtils";rn private static final String CHARSET_NAME = "UTF-8";rn private static final OkHttpClient mOkHttpClient = new OkHttpClient();rnrn public static Call enqueue(Request request, Callback callback)rn rn Call localCall = mOkHttpClient.newCall(request);rn localCall.enqueue(callback);rn return localCall;rn rnrnrn[/code]rn一般情况下,用okhttp访问服务器可以用以下代码:rn[code=java]rnfinal String url = "http://www.abc.com.cn/data/sk/101010100.html";rn//rnOkHttpClient okHttpClient = new OkHttpClient();rnfinal okhttp3.Request request = new okhttp3.Request.Builder()rn .url(url)rn .build();rnCall call = okHttpClient.newCall(request); rncall.enqueue(new Callback() rn @Overridern public void onFailure(Call call, IOException e) rn Log.e(TAG, "onFailure() e=" + e);rn rn @Overridern public void onResponse(Call call, final Response response) throws IOException rn Log.i(TAG, " onResponse() reuslt=" + response.body().string());rn rn);[/code]
关于OkHttp导包的问题,eclipse
我导入了OkHttp和Okio,但是运行报了java.lang.NoClassDefFoundError: com.squareup.okhttp.OkHttpClient的错,求大神解救nPS:顺便AS如何导包也说一下- -.
关于安卓开发的网络请求之OKHTTP
之前一直听闻OKHTTP框架,但并未使用过,近期开发一个原生项目,想着就用上吧,上网查询了很多资料,借鉴了很多被人的代码,终于添加上了。为了方便以后使用,特写出来防止自己遗忘。 主要借鉴:https://blog.csdn.net/liu_guizhou/article/details/52953560# 首先是添加网络权限请求: &amp;lt;uses-permission android:n...
关于OKHttp一点心得
一、概述        okhttp是专注于提升网络连接效率的http客户端,Android版Http客户端,支持SPDY、连接池、GZIP和HTTP缓存;它能实现同一ip和端口的请求重用一个socket,这种方式能大大降低网络连接的时间,和每次请求都建立socket,再断开socket的方式相比,降低了服务器服务器的压力。二、基于json请求的案列   public static String ...
关于OkHttp的用法
package com.example.fafa.mydemoaboutnet; import android.app.DownloadManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget
关于okhttp的线程管理思路
最近Android请求网络比较火的,官方都采用的http请求库就是okhttp了,此库做的优化比较好,效率比较高,我比较想了解其线程的管理,所以看了看源码:public synchronized ExecutorService executorService() { if (executorService == null) { executorService = new ThreadP
关于Okhttp的post请求数据
先写一个方法 public String getpost(String url){ // 1.创建OkHttpClient OkHttpClient okHttpClient = new OkHttpClient.Builder() .build(); // 2.创建请求参数,注
关于okhttp缓存
okhttp可默认缓存get请求的数据。 意思为在指定位置缓存10M大小,超出会清缓存。 可打印 response.cacheResponse()和response.networkResponse()。 前者不为空说明是从缓存中取到的数据,后者不为空说明是从网络取到的数据。 对于post需要结合retrofit实现。
关于对OKHttp的简单使用
自从开始使用Android Studio(后面简称为AS)以后,我们之前使用的HttpClient就不是那么的方便了【 HttpClient Google已经不用了】, 如果在Android 6.0以后还希望继续使用HttpClient,需添加一个“org.apache.http.legacy.jar”的三方jar包,或者直接在build.gradle里面的android{}下添加一句“ useL
关于OKHttp的一些理解
文中有很多是基于一些前辈的理解融汇过来的,还请理解概括起来说OKHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于HTTP的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用连接池来降低响应延迟问题。基本要求Request(请求)每一个HTTP请求都应该响应包含一个URL,一个GET或POST方法以及Header或其他参数,
关于okhttp的自定义拦截器
拦截器大家都很熟悉了,这里我只写自定义的拦截器创建MyInterceptor继承Interceptorpublic class MyInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { //获取原始的请求数据
关于okhttp的二次封装
okhttp的二次封装,首先我们是要给他一个封装类: /** * Created by 小亚 on 2017/9/6. * okhttp中级封装,实现两个功能,从服务端下载数据,从客户端提交数据 * 封装优秀的okhttp:okohttpUtils,OKGO(更深入的封装,研究okgo) * 节约内存,使所有的网络请求都用一个okhttpclient和handle对象 * 解决ok
关于OkHttp的使用
从原理角度解析Android (Java) http 文件上传 完全解析 使用教程
关于okhttp异常处理问题?
当网络返回状态不是200时,都会闪退!?但有时如404或者401时,我希望输出我要的结果,如下面代码,请问有什么方法可以返回我要的错误信息,而不是闪退呢?rn[code=java]rnif (connection.getResponseCode() != HttpURLConnection.HTTP_OK) rnstrResult = "\"errcode\":\""+ Integer.toString(connection.getResponseCode()) +"\",\"errmsg\":\""+ connection.getResponseMessage() +"\"";rnreturn strResult;rnrn[/code]
okhttp发送请求_okhttp用法_okhttp教程
需求:利用okhttp,建立http patch请求(类似于get post),发送json数据,设置header 背景:原本使用hutool-all工具发送http请求,但是其底层用的jdk的httpConnection不支持patch,最后无奈选择okhttp 但是okhttp官网打不开,网上很多写法都是匿名内部类,不方便,所以在这里把我的方法贴出来,不好之处欢迎指正 //构造请求 M...
关于OKHttp的Https的认证问题(全部信任)
亲测很管用,步骤如下: 1,新TrustAllcert类实现X509TrustManager接口: public class TrustAllCerts implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] chain, String authType
关于OkHttp缓存post请求的问题
现有这样一个要求,使用Retorfit+okhttp需要在有网的时候能够连接服务器,读取相关信息;在没网络断开的时候需要读取Okhttp的缓存来达到离线的效果。 基于上述的需求,可以使用Okhttp的拦截器来实现://设置缓存目录 File cacheFile = new File(BaseApplication.getContext().getCacheDir(), "cache"); Cach
OkHttp数据请求和OkHttp拦截器
首先,导入OkHttp的依赖包: compile 'com.squareup.okhttp3:okhttp:3.9.0' project的gradle中: maven { url 'https://maven.google.com' } OkHttp模块: //请求数据 public void getData(final MyActivityModleListener l
《OkHttp源码分析》之 OkHttp的初始化
本文作者081-2018Mirs_sir博客:http://my.csdn.net/a109340声明:本文由作者 Mirs_sir 授权发布,未经原作者允许请勿转载 看到上面蓝色字了吗,点下吧感谢 Mirs_sir 为我们带来OkHttp源码分析系列文章,目录如下:1.Http请求原理2.OkHttp的简单使用3.OkHttp的初始化4.OkHttp请求流程分析5.OkHttp的请求拦截链6.O
《OkHttp源码分析》之 OkHttp的简单使用
本文作者071-2018Mirs_sir博客:http://my.csdn.net/a109340声明:本文由作者 Mirs_sir 授权发布,未经原作者允许请勿转载 看到上面蓝色字了吗,点下吧感谢 Mirs_sir 为我们带来OkHttp源码分析系列文章,目录如下:1.Http请求原理2.OkHttp的简单使用3.OkHttp的初始化4.OkHttp请求流程分析5.OkHttp的请求拦截链6.O
关于 OkHttp 依赖冲突问题的解决过程
OkHttp 是一个流行的开源网络请求库。许多第三方库的底层都是使用 OkHttp 实现网络请求,所以 OkHttp 相关的依赖冲突问题就变得很难避免,下文是我所遇到的一次关于 OkHttp 的依赖冲突问题,通过对Gradle工具及Android Studio的灵活使用,解决了此问题。
关于okhttp使用中url的问题
[img=https://img-bbs.csdn.net/upload/201705/16/1494899555_195814.png][/img]rn[img=https://img-bbs.csdn.net/upload/201705/16/1494899565_639452.png][/img]rn[img=https://img-bbs.csdn.net/upload/201705/16/1494899573_731067.png][/img]rn[img=https://img-bbs.csdn.net/upload/201705/16/1494899582_231700.png][/img]rn网上找一个url,通过okhttp可以在logcat中打印出url和对应的json数据。可是公司的接口只能获取到url,无法通过url获取到对应的json,但是在logcat中可以手动点击url通过浏览器获取到数据。不知道这是什么问题?
okhttp
Okhttp目前最新的jar包(里面包含okio.jar)
关于OKHTTP和RX及其他三方包冲突的问题
问题描述 Error: Program type already present:okio.AsyncTimeout; Error: Program type already present: rx.android.BuildConfig; Error: Program type already present: okio.Buffer$1; Error: Program type alread...
okhttp关于https的证书信任问题
亲测很管用,步骤如下: 1,新TrustAllcert类实现X509TrustManager接口: [java] view plain copy public class TrustAllCerts implements X509TrustManager {       @Override         public void che
okhttp 问题总结
前言: 今日付出的汗水,只为明日不一样的自己。唯有坚持不懈的努力,才能过上自己想要的生活 转载请标明出处: http://blog.csdn.net/w690333243/article/details/78609258 更多内容请访问【-小沫-专栏】 一、如果想要打印okhttp的log 则logging-interceptor版本要和okhttp版本保
okhttp访问https的问题
解决方式有两种: 第一种是绕过https的验证方法: 新建一个SSLSocketClient工具类,添加如下方法:   //获取这个SSLSocketFactory public static SSLSocketFactory getSSLSocketFactory() { try { SSLContext sslContext = SSLContext.getIn...
android OKHTTP 的缓存问题
了解OKHTTP的缓存 可有助于我们使用retrofit picasso 等配合okhttp使用的框架。 okhttp中的缓存主要要在两个地方配置: 第一,在构造okhttpclient时 设置缓存路径 第二,在构造request时 配置缓存策略 一、缓存路径 OkHttpClient client = new OkHttpClient.Builder()
关于Okhttp(一)-基本使用
简介 Okhttp是square公司推出的一款Android和Java网络请求库,当前推出了Okhttp3,在原来的基础上做了很大改进,也是Android目前最流行的网络库之一,本系列文章就是基于最新的来剖析。鉴于能力以及代码的优化改动,文中如有不足之处还望指教,谢谢。 特点 Http/2支持多路复用 采用连接池减少请求延时 支持GZIP压缩 响应缓存 支持websocket ...
关于okhttp和retrofit的使用的疑问
在网上看了很多文章,但是看到代码的时候只看到了retrofit的使用而没有看到okhttp的使用,当时的疑问是是不是作者忘写了,而事实上是retrofit已经对okhttp进行封装了,当系统中有引入okhttp模块时,retrofit会率先使用okhttp,所有开发人员是无需关心这些的,只需要在代码中写入第四行就可以了 Retrofit retrofit = new Retrofit.Bui
OkHttp关于https请求的设置
https请求由于证书验证问题,直接请求一般都会失败.一般是做证书验证处理或者忽略证书验证,这里介绍后者.解决方案从外文文章中看到,这里搬砖一下.希望对大家有帮助 public static OkHttpClient getUnsafeOkHttpClient() { try { // Create a trust manager that does not
配置okhttp遇到的问题
在配置的过程的时候,提示最小sdk版本应该小于等于26。我百度了很多都没有解决,最终找到一个解决办法。 在build.gradle中添加 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } ...
关于okhttp下载文件的一点发现
上一个项目用的是retrofit做的网络请求,所以自然升级时候下载apk时候,也是用的retrofit。但是这个项目是接手了别人写了一部分的项目,所以网络请求就沿用了之前的okhttp了。但是再用它下载文件apk时候发现了一点问题,不知道是自己用的不对,还是怎么了,但是还是通过一些方法解决了。           遇到的问题就是如何判断下载结束了。在原来用retrofit和Rxjava时候,下载
关于OkHttp的缓存和网络拦截
有时候我们要对网络数据进行缓存默认情况下okhttp是不进行缓存的 添加拦截器进行数据拦截。 static OkHttpClient client; static { client = new OkHttpClient(); File cacheFile = null; client.newBuilder()//创建一个构建者 .readTimeo
修改个人信息—关于Okhttp的异步请求
首先,先看界面需求 斜体样式 在进入该界面之前就应该获取到数据,所以需要使用okhttp框架的异步请求 直接上代码 OkHttpClient okHttpClient=new OkHttpClient(); // String json = bowlingJson("id", "2019"); Req...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件