com.soulgalore.web.pagesavings.impl.HTTPClientBodyFetcher.java Source code

Java tutorial

Introduction

Here is the source code for com.soulgalore.web.pagesavings.impl.HTTPClientBodyFetcher.java

Source

/******************************************************
 * Web savings, how much can your web page save in kb?
 * 
 *
 * Copyright (C) 2013 by Peter Hedenskog (http://peterhedenskog.com)
 *
 ******************************************************
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in 
 * compliance with the License. You may obtain a copy of the License at
 * 
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is 
 * distributed  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
 * See the License for the specific language governing permissions and limitations under the License.
 *
 *******************************************************
 */
package com.soulgalore.web.pagesavings.impl;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.soulgalore.web.pagesavings.HTTPBodyFetcher;

public class HTTPClientBodyFetcher implements HTTPBodyFetcher {

    public String getBody(String url) throws IOException {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);

        try {
            HttpResponse response = httpclient.execute(httpGet);
            HttpEntity entity = response.getEntity();

            final String encoding = entity.getContentEncoding() != null ? entity.getContentEncoding().getValue()
                    : "UTF-8";

            final String body = (readBody(entity, encoding));

            EntityUtils.consume(entity);
            return body;
        } finally {
            httpGet.releaseConnection();
        }

    }

    private String readBody(HttpEntity entity, String enc) throws IOException {
        final StringBuilder body = new StringBuilder();
        String buffer = "";
        if (entity != null) {
            final BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), enc));
            while ((buffer = reader.readLine()) != null) {
                body.append(buffer);
            }
            reader.close();
        }
        return body.toString();
    }

}