/** Returns a copy of the raw HTTP payload. */ public Buffer getBody() { return body != null ? body.clone() : null; }
@Override public Source source(File file) throws FileNotFoundException { Buffer result = files.get(file); if (result == null) throw new FileNotFoundException(); final Source source = result.clone(); openSources.put(source, file); return new ForwardingSource(source) { @Override public void close() throws IOException { openSources.remove(source); super.close(); } }; }
public MockResponse setBody(Buffer body) { setHeader("Content-Length", body.size()); this.body = body.clone(); // Defensive copy. return this; }
/** * 打印响应结果 * * @param request {@link Request} * @param response {@link Response} * @param logResponse 是否打印响应结果 * @return 解析后的响应结果 * @throws IOException */ @Nullable private String printResult(Request request, Response response, boolean logResponse) throws IOException { try { //读取服务器返回的结果 ResponseBody responseBody = response.newBuilder().build().body(); BufferedSource source = responseBody.source(); source.request(Long.MAX_VALUE); // Buffer the entire body. Buffer buffer = source.buffer(); //获取content的压缩类型 String encoding = response .headers() .get("Content-Encoding"); Buffer clone = buffer.clone(); //解析response content return parseContent(responseBody, encoding, clone); } catch (IOException e) { e.printStackTrace(); return "{\"error\": \"" + e.getMessage() + "\"}"; } }
FILE_HEADER_SIZE + upstreamPos, upstreamBuffer.clone(), upstreamBytesRead);
@Test public void cloneDoesNotObserveWritesToOriginal() { Buffer original = new Buffer(); Buffer clone = original.clone(); original.writeUtf8("abc"); assertEquals(0, clone.size()); }
@Test public void originalDoesNotObserveWritesToClone() { Buffer original = new Buffer(); Buffer clone = original.clone(); clone.writeUtf8("abc"); assertEquals(0, original.size()); }
FILE_HEADER_SIZE + upstreamPos, upstreamBuffer.clone(), upstreamBytesRead);
@Test public void originalDoesNotObserveReadsFromClone() throws Exception { Buffer original = new Buffer(); original.writeUtf8("abc"); Buffer clone = original.clone(); assertEquals("abc", clone.readUtf8(3)); assertEquals(3, original.size()); assertEquals("ab", original.readUtf8(2)); }
logger.log(buffer.clone().readString(charset));
@Test public void cloneDoesNotObserveReadsFromOriginal() throws Exception { Buffer original = new Buffer(); original.writeUtf8("abc"); Buffer clone = original.clone(); assertEquals("abc", original.readUtf8(3)); assertEquals(3, clone.size()); assertEquals("ab", clone.readUtf8(2)); }
logger.log(buffer.clone().readString(charset));
@Test public void readFullyByteArray() throws IOException { Buffer data = new Buffer(); data.writeUtf8("Hello").writeUtf8(repeat('e', SEGMENT_SIZE)); byte[] expected = data.clone().readByteArray(); sink.write(data, data.size()); sink.emit(); byte[] sink = new byte[SEGMENT_SIZE + 5]; source.readFully(sink); assertByteArraysEquals(expected, sink); }
transaction.setResponseBody(readFromBuffer(buffer.clone(), charset)); } else { transaction.setResponseBodyIsPlainText(false);
@Test public void cloneMultipleSegments() throws Exception { Buffer original = new Buffer(); original.writeUtf8(repeat('a', SEGMENT_SIZE * 3)); Buffer clone = original.clone(); original.writeUtf8(repeat('b', SEGMENT_SIZE * 3)); clone.writeUtf8(repeat('c', SEGMENT_SIZE * 3)); assertEquals(repeat('a', SEGMENT_SIZE * 3) + repeat('b', SEGMENT_SIZE * 3), original.readUtf8(SEGMENT_SIZE * 6)); assertEquals(repeat('a', SEGMENT_SIZE * 3) + repeat('c', SEGMENT_SIZE * 3), clone.readUtf8(SEGMENT_SIZE * 6)); }
@Test public void seekWithinSegment() throws Exception { assumeTrue(bufferFactory == BufferFactory.SMALL_SEGMENTED_BUFFER); Buffer buffer = bufferFactory.newBuffer(); assertEquals("abcdefghijkl", buffer.clone().readUtf8()); // Seek to the 'f' in the "defg" segment. try (UnsafeCursor cursor = buffer.readUnsafe()) { assertEquals(2, cursor.seek(5)); // 2 for 2 bytes left in the segment: "fg". assertEquals(5, cursor.offset); assertEquals(2, cursor.end - cursor.start); assertEquals('d', (char) cursor.data[cursor.start - 2]); // Out of bounds! assertEquals('e', (char) cursor.data[cursor.start - 1]); // Out of bounds! assertEquals('f', (char) cursor.data[cursor.start]); assertEquals('g', (char) cursor.data[cursor.start + 1]); } }
logger.log(buffer.clone().readString(charset));
public MockResponse setBody(Buffer body) { setHeader("Content-Length", body.size()); this.body = body.clone(); // Defensive copy. return this; }