import org.apache.jmeter.samplers.SampleResult; //导入方法依赖的package包/类
public List getFragments(Parser parser, List uris, String url) {
List res = new ArrayList<>();
if (!uris.isEmpty()) {
SampleResult result = new SampleResult();
String uriString = uris.get(0).getTsUri();
if ((url != null) && (!uriString.startsWith("http"))) {
uriString = url + uriString;
}
result.sampleStart();
try {
DataRequest respond = parser.getBaseUrl(new URL(uriString), result, false);
result.sampleEnd();
String[] urlArray = uriString.split("/");
String lastPath = urlArray[urlArray.length - 1];
result.setRequestHeaders(respond.getRequestHeaders() + "\n\n" + getCookieHeader(uriString) + "\n\n"
+ getRequestHeader(this.getHeaderManager()));
result.setSuccessful(respond.isSuccess());
result.setResponseMessage(respond.getResponseMessage());
result.setSampleLabel(lastPath);
result.setResponseHeaders("URL: " + uriString + "\n" + respond.getHeadersAsString());
result.setResponseCode(respond.getResponseCode());
result.setContentType(respond.getContentType());
result.setBytes(result.getBytesAsLong() + (long) result.getRequestHeaders().length());
int headerBytes = result.getResponseHeaders().length() // condensed
// length
// (without
// \r)
+ respond.getHeaders().size() // Add \r for each header
+ 1 // Add \r for initial header
+ 2; // final \r\n before data
result.setHeadersSize((int) headerBytes);
result.setSentBytes(respond.getSentBytes());
result.setDataEncoding(respond.getContentEncoding());
res.add(result);
} catch (IOException e1) {
e1.printStackTrace();
result.sampleEnd();
result.setSuccessful(false);
result.setResponseMessage("Exception: " + e1);
res.add(result);
}
uris.remove(0);
List aux = getFragments(parser, uris, url);
for (SampleResult s : aux) {
if(!res.contains(s))
res.add(s);
}
}
return res;
}