@Test public void testNewHeadersAreAddedByMerge() throws IOException { Header[] headers = { new BasicHeader("Date", formatDate(requestDate)), new BasicHeader("ETag", "\"etag\"") }; entry = HttpTestUtils.makeCacheEntry(headers); response.setHeaders( new Header[] { new BasicHeader("Last-Modified", formatDate(responseDate)), new BasicHeader("Cache-Control", "public"), }); HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry, new Date(), new Date(), response); Header[] updatedHeaders = updatedEntry.getAllHeaders(); assertEquals(4, updatedHeaders.length); headersContain(updatedHeaders, "Date", formatDate(requestDate)); headersContain(updatedHeaders, "ETag", "\"etag\""); headersContain(updatedHeaders, "Last-Modified", formatDate(responseDate)); headersContain(updatedHeaders, "Cache-Control", "public"); }
private void processRequest(HttpRequest request, Socket client) throws IllegalStateException, IOException { if (request == null) { return; } Log.d(LOG_TAG, "processing"); String url = request.getRequestLine().getUri(); HttpResponse realResponse = download(url); if (realResponse == null) { return; } Log.d(LOG_TAG, "downloading..."); BufferedInputStream data = new BufferedInputStream(realResponse.getEntity().getContent()); StatusLine line = realResponse.getStatusLine(); HttpResponse response = new BasicHttpResponse(line); response.setHeaders(realResponse.getAllHeaders()); Log.d(LOG_TAG, "reading headers"); StringBuilder httpString = new StringBuilder(); httpString.append(response.getStatusLine().toString()); httpString.append("\n"); for (Header h : response.getAllHeaders()) { httpString.append(h.getName()).append(": ").append(h.getValue()).append("\n"); } httpString.append("\n"); Log.d(LOG_TAG, "headers done"); try { byte[] buffer = httpString.toString().getBytes(); int readBytes; Log.d(LOG_TAG, "writing to client"); BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream()); bos.write(buffer, 0, buffer.length); // Start streaming content. byte[] buff = new byte[1024 * 50]; while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) { bos.write(buff, 0, readBytes); } } catch (Exception e) { Log.e("", e.getMessage(), e); } finally { if (data != null) { data.close(); } client.close(); } }
@Test public void testHeadersAreMergedCorrectly() throws IOException { Header[] headers = { new BasicHeader("Date", formatDate(responseDate)), new BasicHeader("ETag", "\"etag\"") }; entry = HttpTestUtils.makeCacheEntry(headers); response.setHeaders(new Header[] {}); HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry, new Date(), new Date(), response); Header[] updatedHeaders = updatedEntry.getAllHeaders(); assertEquals(2, updatedHeaders.length); headersContain(updatedHeaders, "Date", formatDate(responseDate)); headersContain(updatedHeaders, "ETag", "\"etag\""); }