weex - Android WXStreamModule 代码疑问

查看:225
本文介绍了weex - Android WXStreamModule 代码疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

stream module在接收到请求时,为什么要讲http请求报文中Map<String,List<String>> 类型的headers转换成
Map<String,String>类型的simpleHeaders,而且只是通过entry.getValue().get(0)的方式。这样不是会导致数据丢失么

@Override
    public void onHeadersReceived(int statusCode,Map<String,List<String>> headers) {
      mResponse.put("readyState", 2);
      mResponse.put("status", statusCode);

      Map<String, String> simpleHeaders = new HashMap<>();
      if (headers != null) {
        Iterator<Map.Entry<String, List<String>>> it = headers.entrySet().iterator();
        while (it.hasNext()) {
          Map.Entry<String, List<String>> entry = it.next();
          if (entry.getValue().size() > 0) {
            simpleHeaders.put(entry.getKey() == null ? "_" : entry.getKey(), entry.getValue().get(0));
          }
        }
      }

      mResponse.put("headers", simpleHeaders);
      mRespHeaders = simpleHeaders;
      if (mProgressCallback != null) {
        mProgressCallback.invokeAndKeepAlive(mResponse);
      }
    }

解决方案

这里只是简单的获取header中的第一个value,当然如果你的需求可能存在设置多个value的情况,那么可以在初始化的时候设置一下自定义的IWXHttpAdapter,在执行IWXHttpAdapter.OnHttpListeneronHeadersReceived方法时,处理一下参数的传递把所有value都放到列表的第0项即可。

当然我没用stream模块,由于定制化的东西比较多,所以自己定义了http模块。

这个还是根据你自身需求去做,如果需要,还是比较推荐自定义模块的。

这篇关于weex - Android WXStreamModule 代码疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆