Esempio n. 1
0
  @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");
  }
Esempio n. 2
0
  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();
    }
  }
Esempio n. 3
0
  @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\"");
  }