Retrofit 打印log时,中文会显示类似%E8%BE%BD字符

摘要:
OkHttpClient.Builderbuilder=newOkHttpClient().newBuilder();/***lylTODO下面一行代码加入https的接口访问**///builder.sslSocketFactory;builder.addInterceptor;就可以解决问题。2018年11月27日15:32:36今日我们产品在测试时,发现有个接口提示请求失败。我log显示:---onError--Throwable-java.lang.NullPointerException:Attempttoinvokevirtualmethod'java.lang.Stringokhttp3.MediaType.toString()'onanullobjectreference首先想到除了这次改动,其他没涉及到。查看了自己这个接口恰恰:传递的参数是空的。所以更能判断是自己这里少加了非空的判断。

https://blog.csdn.net/honghailiang888/article/details/54289632?utm_source=blogxgwz6

参照Android Retrofit2.1.0设置编码格式GBK 的文章。

OkHttpClient.Builder builder = newOkHttpClient().newBuilder();
        /***lyl TODO 下面一行代码加入https的接口访问**/
        //builder.sslSocketFactory(getSSLSocketFactory(context));
        builder.addInterceptor(newInterceptor() {
            @Override
            public Response intercept(Interceptor.Chain chain) throwsIOException {
                Request original =chain.request();
            //Request customization: add request headers
//Log.d(TAG, fdata);StringUtil.encryptAsDoNet(fdata, 1)
//Log.d(TAG, "加密后:"+DESUtils.encryptAsDoNet(fdata, 1));
                Request.Builder requestBuilder = null;
                try{
                    requestBuilder =original.newBuilder()
                            .addHeader("androidorios", "android");} catch(Exception e) {
                    LogUtil.e(TAG,"---create--addhead---"+e.toString());
                }
                Request request =requestBuilder.build();
                request = requestBuilder.post(RequestBody.create(MediaType.parse("application/x-www-form-urlencoded;charset=utf-8"),
                        URLDecoder.decode(bodyToString(request.body()), "UTF-8")))
                        .build();
                returnchain.proceed(request);
        }
        });

就可以解决问题。

2018年11月27日15:32:36

今日我们产品在测试时,发现有个接口提示请求失败。我log显示:

---onError--Throwable-java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String okhttp3.MediaType.toString()' on a null object reference

首先想到除了这次改动,其他没涉及到。查看了自己这个接口恰恰:传递的参数是空的。所以更能判断是自己这里少加了非空的判断。修改后的代码如下:

Request request =requestBuilder.build();
                if(null!=request&&request.body().contentLength()>0) {
                    LogUtil.d(UrlConfig.OkHttp, "---request.body.type--" +request.body().contentType().toString());
                    if ((request.body().contentType().toString()).equals("application/x-www-form-urlencoded")) {
                        request = requestBuilder.post(RequestBody.create(MediaType.parse("application/x-www-form-urlencoded;charset=utf-8"),
                                URLDecoder.decode(bodyToString(request.body()), "UTF-8")))
                                .build();
                    }
                }

免责声明:文章转载自《Retrofit 打印log时,中文会显示类似%E8%BE%BD字符》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springboot多数据源时取不同库中相同表结构的数据并分页显示h5红包雨下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOCP 浅析(java代码实现)

随着计算机技术,尤其是网络技术的飞速发展,如今的程序开发人员不仅仅局限于基于单机运行或单一线程的应用程序的开发。服务器端 / 客户端模式的最显著的特点是一个服务器端应用能同时为多个客户端提供服务。而传统的服务器端 / 客户端模式通常为每一个客户端创建一个独立的线程,这种实现方式在客户端数量不多的情况下问题不大,但对于类似于铁路网络订票这样的瞬间客户数量巨大...

Retrofit 2使用要点梳理:小白进阶回忆录

本博客为作者原创,如需转载请注明原博客出处:http://www.cnblogs.com/wondertwo/p/5838528.html(博客园)/http://www.jianshu.com/p/dd2804030b89(简书) 0X00 写在前面 相信做过Android网络请求的同学都绕不开Volley,Retrofit,OkHttp这几座大山...

Centos 6/Redhat 6:远程图形桌面: tigervnc

step 0:【Centos 6/Redhat 6】安装桌面环境。 step 1:安装tigervnc-server step 2:配置 /etc/sysconfig/vncservers     样例: VNCSERVERS="1:root 2:oracle 3:mysql" VNCSERVERARGS[1]="-geometry 1024x768"...

Android调试工具及方法

转自:http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html Logcat Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。 Android Log 一个记录日志的类,用来将消息写入模拟器上的日志文件中。如果你在DDMS上运行logcat的话你可以就实时查看消息。在你的...

ABAP如何在abap中使用日志管理

sap提供标准函数来操作应用日志,这篇文章将详细介绍如何使用应用日志。 1、相关TCODE•SLG0 -> Used to maintain the log object•SLG1 -> Used to view the log 2、配置步骤1)运行SLG0,系统将弹出一个提示窗口,点击"OK"按钮;2)点击"新增"按钮,在对象名中输入"ZTE...

kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

一、kafka 简介 今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要...