Okhttp3-addHeader小坑记

作者: xiasuhuei321 | 来源:发表于2016-08-09 16:10 被阅读0次

    写在前面

    最近感觉自己看了不少东西,不过在上班所以并没有很多的时间来写东西。我有一些半成品不过都不想发出来,毕竟缺少一点自己的东西在里面。好了日常唠嗑(1/1)。

    背景

    前面也说了最近在上班,接触到的项目里用的都是被抛弃的httpclient,说实话这小项目我觉得我是有能力重构的。所以最近着手重构,重构之前首先选定要拿什么做。经过慎重的思考之后决定:项目尽量采用MVC的模式做,网络请求用okhttp(用hongyang封装的okhttp-utils),图片的处理和加载想采用glide,但是目前来看还有一些问题。好了背景介绍到这,下面说坑。

    既然采用Okhttp来重写网络请求,我当然得挑几个出来跑一下试试。这一试问题就出来了,见下图:

    error.png

    415介质错误,等等,难道我请求写的有问题?好吧,真有可能,可能因为自己平时就粗心大意的。

          OkHttpUtils.postString()
    //                .mediaType(MediaType.parse("application/json; charset=utf-8"))
                    .content(jo.toString())
                    .addHeader("tkn", "--")
                    .addHeader("uid", "--")
                    .addHeader("Content-Type", "application/json")
                    .url(" ")
                    .build()
                    .execute(new BitmapCallback() {
                        @Override
                        public void onError(Call call, Exception e, int id) {
                            e.printStackTrace();
                            tvTest.setText("纳尼,竟然会错?");
                        }
    
                        @Override
                        public void onResponse(Bitmap response, int id) {
                            ivImg.setImageBitmap(response);
                        }
                    });
    

    tkn和uid是验证登录的东西,这个东西我肯定是写的没错的,我这个请求我仔细看了一遍也没发现哪出了问题。但错就在那啊!

    可能有细心的看官已经发现了,我注释了一行。是的,那一行就是解决问题的方法。在http头里面声明"Content-Type", "application/json"在okhttp里面是没什么卵用的,okhttp中需要在mediaType中声明介质类型。

    小结

    最近由于工作先后接触了HttpUrlConnection、HttpClient、okhttp,感觉api有的差不多,有的差别很大,关键还是你对于http协议的理解。只要你对http有一定的了解,对于一个有良好设计的东西来说找到对应的api是很容易的。

    相关文章

      网友评论

        本文标题:Okhttp3-addHeader小坑记

        本文链接:https://www.haomeiwen.com/subject/nkddsttx.html