上一篇SAPUI5应用OData元数据请求发送原理分析我们了解了SAPUI5应用如何自动发送HTTP请求OData元数据。本文继续学习SAPUI5框架如何解析到达客户端后的元数据请求响应。当响应成功到达客户端时,触发回调函数:如果xhr.readyState不为4,则直接返回。元数据请求的响应头,Content-Type为application/xml:构造一个响应对象:xml元数据的内容存储在xhr.responseText里面。因为statusCode为200,进入成功回调函数:因为response.data为空,调用对应句柄读取:首先获取content-type:从响应头字段中读取Content-Type字段:use;作为分隔符:使用分隔后的第一个元素作为结果:我们自己构造的response对象的body字段,xhr标准对象的responseText:根据mediatype中存储的type获取对应的handler?handler的accept字段必须包含媒体类型中指定的类型:如果handler通过验证,则创建一个读写上下文对象:if(handlerAccepts(handler,cType)){varreadContext=createReadWriteContext(cType,version,上下文,处理程序);阅读上下文。响应=响应;response.data=parseCallback(handler,body,readContext);返回响应.data!==undefined;}这里很有意思,contentType是Application/xml,但是formatQueryString是json格式的:然后根据handler和response解析并将结果存入response对象的data字段。xml元数据解析器:metadataParser:varmetadataParser=function(handler,text){///
