一,OKHttp介绍

okhttp是一个第三方类库,用于android中请求网络。

这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。

okhttp有自己的官网,官网网址:OKHttp官网

如果想了解原码可以在github上下载,地址是:https://github.com/square/okhttp

在AndroidStudio、gradle中使用不需要下载jar包,直接添加依赖即可: 
compile ‘com.squareup.okhttp3:okhttp:3.4.1’

项目中遇到的问题:

    public  JSONObject doPost(String url, JSONObject params,Boolean token,String type) { 

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(JDCommonConstant.TIME_OUT, TimeUnit.SECONDS)
.readTimeout(JDCommonConstant.TIME_OUT, TimeUnit.SECONDS)
.build(); Set<String> iterator = null;
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
if(params != null) {
iterator = params.keySet();
for (String str : iterator) {
// log.info("当前参数::"+ str + " 类型:" + params.get(str).getClass());
String value = params.getString(str);
value=value.startsWith("\"")?value.substring(1,value.length()-1):value;
value=value.endsWith("\"")?value.substring(0,value.length()-1):value;
value=StringEscapeUtils.unescapeJava(value);
// log.info("当前参数的值::"+value +" 长度:"+ value.length());
builder.addFormDataPart(str, value);
}
}else {
builder.addFormDataPart("token", "");
}
RequestBody body = builder.build();
Request request = new Request.Builder()
.url(finalUrl)
.post(body)
.build(); Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
if(response.isSuccessful()) {
String str = response.body().string();
str=str.startsWith("\"")?str.substring(1,str.length()-1):str;
str=str.endsWith("\"")?str.substring(0,str.length()-1):str;
JSONObject object = JSON.parseObject(str);
log.info("接口返回值:"+ JSON.toJSONString(object));
return object;
}else {
//请求失败return null;
}
} catch (IOException e) {return null;
}
}

  结果:无法访问,报错

  解决:由于公司是内网,需要设置代理,增加代理

     int proxyPort = 端口号8080;
String proxyHost = "代理host";
final String username = "";
final String password = "";
Authenticator proxyAuthenticator = new Authenticator() {
@Override public Request authenticate(Route route, Response response) throws IOException {
String credential = Credentials.basic(username, password);
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
} }; OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(JDCommonConstant.TIME_OUT, TimeUnit.SECONDS)
.readTimeout(JDCommonConstant.TIME_OUT, TimeUnit.SECONDS)
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
.proxyAuthenticator(proxyAuthenticator)
.build();

okhttp的使用详细介绍:https://blog.csdn.net/larryqingping/article/details/79440665

OkHTTPClient的更多相关文章

  1. okhttp封装时,提示 cannot resolve method OkHttpClient setConnectTimeout() 函数

    如标题所示,okhttp封装时,提示 cannot resolve method  OkHttpClient setConnectTimeout() 函数,有遇到这样现象的朋友吗? 原因:因使用的是 ...

  2. Android封装OkHttpClient的类库

    由于android6.0的SDK没有HttpClient,只有HttpURLConnection和OkHttpClient,特记下OkHttpClient的使用方法 1.Ui测试界面布局 <?x ...

  3. OAthe2 Login use OkHttpClient and OAuth2RestTemplate

    http://samchu.logdown.com/posts/1437422-oathe2-login-use-okhttpclient-and-oauth2resttemplate?utm_sou ...

  4. 使用OkHttpClient处理json请求处理的方式

    今天遇到一个问题,重构老系统时,前端传递的参数是一个json,controller层可以用@ResponseBody来接收. 因为新系统用的是spring cloud这一套,调用其他服务使用的是fei ...

  5. Android Studio OkHttpClient使用

    本次来记录下OkHttpClient的使用,OkHttpClient是用来完成android 客户端对服务端请求的工具. 首先记住,使用网络的时候一定要加入权限,加入到AndroidMainfest. ...

  6. OkHttpClient简单封装

    一.接口 public interface HttpListener { void onFinish(String reponse); void onError(Exception e); } 二.O ...

  7. Okhttp3源码解析(1)-OkHttpClient分析

    ### 前言 上篇文章我们讲了[Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f),今天根据上节讲到请求流程来分析源码,那么第一步就是实例化OkH ...

  8. OkHttpClient调优案例

    OkHttpClient调优案例 作者:Grey 原文地址: 语雀 博客园 Github 实际案例 系统运行一段时间后,线程数量飙升,CPU持续居高不下 排查工具 https://fastthread ...

  9. feign使用okHttpClient,调用原理

    最近项目中 spring cloud 用到http请求,使用feign,配置okhttp,打算配置一下就直接使用,不过在压测与调优过程中遇到一些没有预测到的问题,附上排查与解析结 yml.pom配置 ...

随机推荐

  1. js实现图片(高度不确定)懒加载

    最近一直在弄广告页,由于广告页几乎都是图片拼凑起来的,为了减少服务器压力和带宽,采用图片懒加载方式,但是我们的图片高度又不确定,所以我在网上下载了echo.js自己改了一下. 大体思路是:让首页先加载 ...

  2. api-gateway实践(06)新服务网关 - 请求监控

    一.实时监控 用户点击服务实例,系统显示服务实例-version下的api列表, 用户点击某个api的如下两个图标 1.API请求次数监控 横轴:时间,粒度为分钟 纵轴:请求访问次数 展示:失败数(红 ...

  3. 查看centos版本及32还是64位

    1.[root@mini1 ~]# cat /etc/issue 2.[root@mini1 ~]#  cat /etc/redhat-release 查看位数: [root@mini1 ~]#  g ...

  4. javascript获取表单的各项值

    何谓表单? 表单是html页面中负责数据采集功能的部件,它往往由三个部分组成: 表单标签:<form></form> 用于声明表单的范围,位于表单标签中的元素将被提交.属性有m ...

  5. ecshop PC版本智能跳转到对应手机版页面

    以下适用于PC跳转到ectouch手机版的写法.其他手机端的方法类似. 修改文件 includes/lib_main.php 增加以下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  6. JSON.stringify()和JSON.parse()分别是什么

    JSON.stringify() 从一个对象中解析出字符串 JSON.stringify({"a":"1","b":"2" ...

  7. ORA-09925: Unable to create audit trail file带来的sqlplus / as sysdba无法连接

    SQL> show parameter pfile; /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/spfilehukou.ora SQL&g ...

  8. iOS之AFSecurityPolicy

    AFSecurityPolicy是AFNetworking中负责对https请求进行证书验证的模块,本文主要是要搞清楚它是如何工作的. 在介绍AFSecurityPolicy之前,我们先来了解一下ht ...

  9. Spring-cloud(二)注册服务提供者搭建

    上文已经写了如何去搭建注册中心,仅有注册中心是远远不够的,所以我们需要注册到注册中心并提供服务的节点,这里称为注册服务提供者 前提 阅读上文,并成功搭建注册中心,环境无需改变 项目搭建 这里我们需要新 ...

  10. iOS masonry 不规则tagView布局 并自适应高度

    在搜索页面经常会有不规则的tag出现,这种tagView要有点击事件,单个tagView可以设置文字颜色,宽度不固定根据内容自适应,高度固定,数量不固定.总高度就不固定.最近对于masonry的使用又 ...