Volley框架下json不显示中文的问题

来源:互联网 发布:手机看电影软件排行 编辑:程序博客网 时间:2024/06/05 05:06

今天在使用Volley框架的时候发现返回的json不返回中文,网上查看发现貌似大家都只有说返回中文乱码。

后来一位大神的对于Volley框架编码的提示启发了我.

package com.example.projectcombat;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;public class MainActivity extends AppCompatActivity {    private Button button_1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Stringrequest();    }    private void Stringrequest() {        button_1= (Button) findViewById(R.id.button_1);        button_1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String url="http://192.168.1.100:8080/info.json";                //1,创建StringRequest对象              StringRequest request=  new StringRequest(url, new Response.Listener<String>() {                    @Override                    public void onResponse(String s) {                        System.out.println("result:"+s);                    }                }, new Response.ErrorListener() {                    @Override                    public void onErrorResponse(VolleyError volleyError) {                        System.out.println("error:"+volleyError.getMessage());                    }                });                //2创建队列                RequestQueue mRequestQueue= Volley.newRequestQueue(MainActivity.this);                //3发起网络请求                mRequestQueue.add(request);            }        });    }}
///上面是源码+返回结果


button_1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        String url="http://192.168.1.100:8080/info.json";        //1,创建StringRequest对象        MyRequest request=  new MyRequest(url, new Response.Listener<String>() {            @Override            public void onResponse(String s) {                System.out.println("result:"+s);            }        }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError volleyError) {                System.out.println("error:"+volleyError.getMessage());            }        });        //2创建队列        RequestQueue mRequestQueue= Volley.newRequestQueue(MainActivity.this);        //3发起网络请求        mRequestQueue.add(request);    }});

//这里是我使用自定义的MyRequest继承StringRequest以及返回结果, 复写了下面的方法,其他没有改变

package com.example.projectcombat;import com.android.volley.NetworkResponse;import com.android.volley.Response;import com.android.volley.toolbox.HttpHeaderParser;import com.android.volley.toolbox.StringRequest;import java.io.UnsupportedEncodingException;/** * Created by Administrator on 2017/5/26. */public class MyRequest extends StringRequest {    public MyRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {        super(method, url, listener, errorListener);    }    public MyRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {        super(url, listener, errorListener);    }    @Override    protected Response<String> parseNetworkResponse(NetworkResponse response) {        String parsed;        try {            parsed = new String(response.data, "utf-8");//就是这里,后面如果自定义JsonObject的话也需要加上编码,否则也不能显示中文        } catch (UnsupportedEncodingException e) {            parsed = new String(response.data);        }        return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));    }}

阅读全文
0 0
原创粉丝点击