com.voidsearch.voidbase.client.VoidBaseHttpClient.java Source code

Java tutorial

Introduction

Here is the source code for com.voidsearch.voidbase.client.VoidBaseHttpClient.java

Source

/*
 * Copyright 2009 VoidSearch.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.voidsearch.voidbase.client;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

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

public abstract class VoidBaseHttpClient implements VoidBaseClient {

    protected HttpClient client = new HttpClient();

    protected static String hostname;
    protected static String module; // depreciate this

    public VoidBaseHttpClient() {
    }

    public VoidBaseHttpClient(String hostname, String module) {
        this.hostname = hostname;
        this.module = module;
    }

    protected byte[] get(VoidBaseQuery query) throws Exception {
        return get(query.getQuery());
    }

    public byte[] get(String query) throws Exception {

        GetMethod method = new GetMethod(query);
        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                new DefaultHttpMethodRetryHandler(3, false));

        StringBuilder sb = new StringBuilder();

        // TODO : add a content dependent fetch

        try {
            int statusCode = client.executeMethod(method);

            if (statusCode == HttpStatus.SC_OK) {
                InputStreamReader is = new InputStreamReader(method.getResponseBodyAsStream());
                BufferedReader in = new BufferedReader(is);

                String line = null;
                while ((line = in.readLine()) != null) {
                    sb.append(line);
                }
            }

        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            method.releaseConnection();
        }

        return (sb.toString()).getBytes();

    }

    protected void post(VoidBaseQuery query, String content) throws Exception {

        PostMethod post = new PostMethod(query.getQuery());
        post.setRequestBody(content);

        try {
            client.executeMethod(post);
            post.getResponseBodyAsStream(); // ignore response
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            post.releaseConnection();
        }
    }

}