@Override public ListObjectsResult parse(Response response) throws IOException { try { ListObjectsResult result = parseObjectListResponse(response.body().byteStream()); result.setRequestId(response.header(OSSHeaders.OSS_HEADER_REQUEST_ID)); result.setStatusCode(response.code()); result.setResponseHeader(parseResponseHeader(response)); return result; } catch (Exception e) { throw new IOException(e.getMessage(), e); } finally { safeCloseResponse(response); } }
/** * 解析listObjectInBucket请求的响应体 * * @param in * @return * @throws Exception */ private static ListObjectsResult parseObjectListResponse(InputStream in) throws ParserConfigurationException, IOException, SAXException, ParseException { ListObjectsResult result = new ListObjectsResult(); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document dom = builder.parse(in); Element element = dom.getDocumentElement(); OSSLog.logD("[parseObjectListResponse] - " + element.getNodeName()); NodeList list = element.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node item = list.item(i); String name = item.getNodeName(); if (name == null) { continue; } else if (name.equals("Name")) { result.setBucketName(checkChildNotNullAndGetValue(item)); } else if (name.equals("Prefix")) { result.setPrefix(checkChildNotNullAndGetValue(item)); } else if (name.equals("Marker")) { result.setMarker(checkChildNotNullAndGetValue(item)); } else if (name.equals("Delimiter")) { result.setDelimiter(checkChildNotNullAndGetValue(item)); } else if (name.equals("EncodingType")) { result.setEncodingType(checkChildNotNullAndGetValue(item)); } else if (name.equals("MaxKeys")) { String maxKeys = checkChildNotNullAndGetValue(item); if (maxKeys != null) { result.setMaxKeys(Integer.valueOf(maxKeys)); } } else if (name.equals("NextMarker")) { result.setNextMarker(checkChildNotNullAndGetValue(item)); } else if (name.equals("IsTruncated")) { String isTruncated = checkChildNotNullAndGetValue(item); if (isTruncated != null) { result.setTruncated(Boolean.valueOf(isTruncated)); } } else if (name.equals("Contents")) { if (item.getChildNodes() == null) { continue; } result.getObjectSummaries().add(parseObjectSummaryXML(item.getChildNodes())); } else if (name.equals("CommonPrefixes")) { if (item.getChildNodes() == null) { continue; } String prefix = parseCommonPrefixXML(item.getChildNodes()); if (prefix != null) { result.getCommonPrefixes().add(prefix); } } } return result; }