关于Volley下自定义XMLRequest的错误

最近跟着一个Volley教程写了一个自定义Volley下的XMLRequest类
(教程地址:点击打开链接),用于解析xml数据,结果出了很奇怪错误。

先看源代码:
首先是XMLRequest类,继承Volley的Request:
public class XMLRequest extends Request
    
    
     
      {
    private final Response.Listener
     
     
      
       mListener;

    public XMLRequest(String url, Response.Listener
      
      
       
        Listener,Response.ErrorListener errorListener) {
        this(Method.GET,url,Listener, errorListener);
    }

    public XMLRequest(int method, String url,Response.Listener
       
       
        
         listener, Response.ErrorListener errorListener) {
        super(method, url, errorListener);
        this.mListener=listener;
    }

    @Override
    protected Response
        
        
          parseNetworkResponse(NetworkResponse response) { try { String xmlString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser=factory.newPullParser(); xmlPullParser.setInput(new StringReader(xmlString)); return Response.success(xmlPullParser, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (XmlPullParserException e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(XmlPullParser response) { mListener.onResponse(response); } } 
        
       
       
      
      
     
     
    
    

接着是XmlActivity类,用于对获取到的xml数据进行解析:
public class XmlActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xml);

        RequestQueue requestQueue= Volley.newRequestQueue(this);
        XMLRequest xmlRequest = new XMLRequest("http://flash.weather.com.cn/wmaps/xml/china.xml",
                new Response.Listener
     
     
      
      () {
                    @Override
                    public void onResponse(XmlPullParser response) {
                        try {
                            int eventType = response.getEventType();
                            while (eventType != XmlPullParser.END_DOCUMENT) {
                                switch (eventType) {
                                    case XmlPullParser.START_TAG:
                                        String nodeName = response.getName();
                                        if ("city".equals(nodeName)) {
                                            String pName = response.getAttributeValue(1);
                                            Log.i("TAG", "------------------------------------------pName = " + pName);
                                        }
                                        break;
                                }
                                eventType = response.next();
                            }
                        } catch (XmlPullParserException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("TAG", "++++++++++++++++++++++++++++++++++++++"+error.getMessage(), error);
            }
        });

        requestQueue.add(xmlRequest);
    }
}
     
     

       刚开始Log日志是可以打印出的,也就是获取到了数据了,但是中文乱码,所以我将XMLRequest里面的parseNetworkResponse方法里面的
String xmlString = new String(response.data,
        HttpHeaderParser.parseCharset(response.headers));
第二个参数改为"UTF-8",结果出错,于是又改回来,然而该回来后就一直报这个错误
09-15 15:20:17.149 2538-2538/com.example.a12345.volley_test E/TAG: ++++++++++++++++++++++++++++++++++++++null
                                                   com.android.volley.NetworkError
                                 at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:166)
                                 at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
哪位大神知道代码哪里错了吗?找了好久,还是找不到,帮忙看看,万分感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值