weex - Android WXStreamModule 代码疑问
本文介绍了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.OnHttpListener
的onHeadersReceived
方法时,处理一下参数的传递把所有value
都放到列表的第0项即可。
当然我没用stream
模块,由于定制化的东西比较多,所以自己定义了http
模块。
这个还是根据你自身需求去做,如果需要,还是比较推荐自定义模块的。
这篇关于weex - Android WXStreamModule 代码疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文