解决Volley乱码问题

作者: 小追兵 | 来源:发表于2015-09-19 15:19 被阅读3621次

小追兵专栏


现在Android开发的网络请求库很多,这里不一一列举了(原因:别的我没用过,不知道怎么说,哈~)。

Volley是我们常用的一个网络请求库。为什么用Volley?这里不做介绍(原因:别的没用过,其实Volley好在哪里我也不知道。嘿~)

使用Volley的同学,很容易遇到乱码问题,对不对?我没说错吧?你遇到了吗?

乱码问题的产生原因,想必大家都知道!这里我不多说。(原因:我怕说了也白说,其实我怕我说不清除,嘎~)

  • 来,让我们看看遇到乱码问题怎么解决吧!

  • 网络请求的时候你怎么用的,是这样用的吗?

//网络请求时,new 一个JsonObjectRequest对象,

JsonObjectRequest jbr=new JsonObjectRequest(url, jsonRequest, listener, errorListener);

  • 可是返回的数据乱码了吗?没乱?这可是不代表你干什么都不乱啊。用他做第三方登录(这里指微信登录)试试,看乱不乱。

  • 乱了?我们看看怎么处理。

  • 复写这个Volley中JsonObjectRequest这个类,写个自定义类CharsetJsonRequest如下:

package com.xxxxx.net;

import java.io.UnsupportedEncodingException;

import org.json.JSONException;
import org.json.JSONObject;

import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.JsonObjectRequest;

//如果返回头中没有Charset,默认UTF-8
public class CharsetJsonRequest extends JsonObjectRequest {

    public CharsetJsonRequest(String url, JSONObject jsonRequest,
            Listener<JSONObject> listener, ErrorListener errorListener) {
        super(url, jsonRequest, listener, errorListener);
    }

    public CharsetJsonRequest(int method, String url, JSONObject jsonRequest,
            Listener<JSONObject> listener, ErrorListener errorListener) {
        super(method, url, jsonRequest, listener, errorListener);
    }

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {

        try {
            String jsonString = new String(response.data, "UTF-8");
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }

}

  • 上面我们在parseNetworkResponse 中制定编码为“UTF-8”,看看,你的乱码问题是不是解决了呢?

  • 当然现在你不该new JsonObjectRequest,应该换成这样请求网络了:

CharsetJsonRequest jbr=new CharsetJsonRequest(url, jsonRequest, listener, errorListener);

不知道你的问题解决了没。

特此声明,这个方法是从刘老师那里学来的。

csdn博客:
http://blog.csdn.net/itheima_mxh/article/details/48575339

相关文章

  • 解决Volley乱码问题

    小追兵专栏 现在Android开发的网络请求库很多,这里不一一列举了(原因:别的我没用过,不知道怎么说,哈哈~)。...

  • volley的Post请求几种方式

    这几天帮网友解决volley请求的问题,才发现volley真的很难用。如果新项目就不要用volley网络框架了。旧...

  • cmd中telnet中文乱码

    解决telnet中文乱码问题

  • HTML文件在浏览器打开并避免乱码

    打开本地html文件 解决乱码问题 出现乱码: 现在在 前加一段代码 解决了乱码问题: 原因: 文章中的的声明和文...

  • web开发中乱码问题的解决

    web开发中乱码问题的解决 由于楼主刚刚接触web不久,自然而然的就遇到了乱码问题。下面就记录一下乱码问题的解决。...

  • 教你解决Sublime Text中文乱码问题

    教你解决Sublime Text中文乱码问题 教你解决Sublime Text中文乱码问题【转载自成长的企鹅】 S...

  • git 小技巧

    解决git status中文乱码问题

  • 随笔 -1(毕业前)

    web.xml中配置过滤器处理中文乱码问题: 拦截器使用场景: 解决乱码问题 解决权限验证问题 HTTP 消息结构...

  • spring异常处理

    中文乱码解决方案 spring提供了一个CharacterEncodingFilter过滤器,可用于解决乱码问题,...

  • 2018-12-31

    问题:.xls直接转.csv乱码 解决:

网友评论

    本文标题:解决Volley乱码问题

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