Android Open Source - AndroidWeatherInformation Custom H T T P Client






From Project

Back to project page AndroidWeatherInformation.

License

The source code is released under:

# Legal information ## Weather Information **Weather Information** is licensed under the Apache License, Version 2.0. The full text of the license can be found in: - LICENSE This license applies...

If you think the Android project AndroidWeatherInformation listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2014 Gustavo Martin Morcuende
 */*from   w  w  w  .  j  a  v a 2s .  c om*/
 * 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 name.gumartinm.weather.information.httpclient;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.net.URL;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;

import android.net.http.AndroidHttpClient;

public class CustomHTTPClient {
    private final AndroidHttpClient httpClient;

    public CustomHTTPClient(final AndroidHttpClient httpClient) {
        this.httpClient = httpClient;
    }

    public String retrieveDataAsString(final URL url)
            throws URISyntaxException, ClientProtocolException, IOException {

        final ResponseHandler<String> handler = new ResponseHandler<String>() {
            @Override
            public String handleResponse(
                    final HttpResponse response)
                            throws UnsupportedEncodingException, IOException {

                if (response != null) {
                    final HttpEntity entity = response.getEntity();
                    if (entity != null) {
                        try {
                            final ContentType contentType = ContentType.getOrDefault(entity);
                            final ByteArrayOutputStream buffer = CustomHTTPClient.this
                                    .sortResponse(response);
                            return new String(buffer.toByteArray(), contentType.getCharset());
                        } finally {
                            entity.consumeContent();
                        }
                    }

                    throw new IOException("There is no entity");
                }

                throw new IOException("There is no response");
            }
        };

        final HttpGet httpGet = new HttpGet();
        httpGet.setURI(url.toURI());

        return this.httpClient.execute(httpGet, handler);
    }

    public ByteArrayOutputStream retrieveRawData(final URL url)
            throws URISyntaxException, ClientProtocolException, IOException {
        final ResponseHandler<ByteArrayOutputStream> handler = new ResponseHandler<ByteArrayOutputStream>() {

            @Override
            public ByteArrayOutputStream handleResponse(
                    final HttpResponse response)
                            throws UnsupportedEncodingException, IOException {

                if (response != null) {
                    final HttpEntity entity = response.getEntity();
                    if (entity != null) {
                        try {
                            return CustomHTTPClient.this.sortResponse(response);
                        } finally {
                            entity.consumeContent();
                        }
                    }

                    throw new IOException("There is no entity");
                }

                throw new IOException("There is no response");
            }
        };

        final HttpGet httpGet = new HttpGet();
        httpGet.setURI(url.toURI());

        return this.httpClient.execute(httpGet, handler);
    }

    public void close() {
        this.httpClient.close();
    }

    private ByteArrayOutputStream sortResponse(final HttpResponse httpResponse) throws IOException {

        if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            throw new IOException("Unexpected response code: "
                    + httpResponse.getStatusLine().getStatusCode());
        }

        final HttpEntity entity = httpResponse.getEntity();
        final InputStream inputStream = entity.getContent();
        try {
            return this.readInputStream(inputStream);
        } finally {
            inputStream.close();
        }

    }

    private ByteArrayOutputStream readInputStream (final InputStream inputStream) throws IOException {
        final ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
        final int bufferSize = 1024;
        final byte[] buffer = new byte[bufferSize];

        int len = 0;
        while ((len = inputStream.read(buffer)) != -1) {
            byteBuffer.write(buffer, 0, len);
        }

        return byteBuffer;
    }
}




Java Source Code List

name.gumartinm.weather.information.activity.AboutActivity.java
name.gumartinm.weather.information.activity.LicensesActivity.java
name.gumartinm.weather.information.activity.MainTabsActivity.java
name.gumartinm.weather.information.activity.MapActivity.java
name.gumartinm.weather.information.activity.PreferencesActivity.java
name.gumartinm.weather.information.activity.SpecificActivity.java
name.gumartinm.weather.information.app.WeatherInformationApp.java
name.gumartinm.weather.information.boot.BootReceiver.java
name.gumartinm.weather.information.fragment.APIKeyNoticeDialogFragment.java
name.gumartinm.weather.information.fragment.current.CurrentFragment.java
name.gumartinm.weather.information.fragment.map.MapButtonsFragment.java
name.gumartinm.weather.information.fragment.map.MapProgressFragment.java
name.gumartinm.weather.information.fragment.overview.OverviewAdapter.java
name.gumartinm.weather.information.fragment.overview.OverviewEntry.java
name.gumartinm.weather.information.fragment.overview.OverviewFragment.java
name.gumartinm.weather.information.fragment.preferences.PreferencesFragment.java
name.gumartinm.weather.information.fragment.specific.SpecificFragment.java
name.gumartinm.weather.information.httpclient.Consts.java
name.gumartinm.weather.information.httpclient.ContentType.java
name.gumartinm.weather.information.httpclient.CustomHTTPClient.java
name.gumartinm.weather.information.model.DatabaseQueries.java
name.gumartinm.weather.information.model.WeatherLocationContract.java
name.gumartinm.weather.information.model.WeatherLocationDbHelper.java
name.gumartinm.weather.information.model.WeatherLocationDbQueries.java
name.gumartinm.weather.information.model.WeatherLocation.java
name.gumartinm.weather.information.model.currentweather.Clouds.java
name.gumartinm.weather.information.model.currentweather.Coord.java
name.gumartinm.weather.information.model.currentweather.Current.java
name.gumartinm.weather.information.model.currentweather.Main.java
name.gumartinm.weather.information.model.currentweather.Rain.java
name.gumartinm.weather.information.model.currentweather.Snow.java
name.gumartinm.weather.information.model.currentweather.Sys.java
name.gumartinm.weather.information.model.currentweather.Weather.java
name.gumartinm.weather.information.model.currentweather.Wind.java
name.gumartinm.weather.information.model.forecastweather.City.java
name.gumartinm.weather.information.model.forecastweather.Coord.java
name.gumartinm.weather.information.model.forecastweather.Forecast.java
name.gumartinm.weather.information.model.forecastweather.List.java
name.gumartinm.weather.information.model.forecastweather.Temp.java
name.gumartinm.weather.information.model.forecastweather.Weather.java
name.gumartinm.weather.information.notification.NotificationIntentService.java
name.gumartinm.weather.information.parser.JPOSCurrentParser.java
name.gumartinm.weather.information.parser.JPOSForecastParser.java
name.gumartinm.weather.information.service.IconsList.java
name.gumartinm.weather.information.service.PermanentStorage.java
name.gumartinm.weather.information.service.ServiceCurrentParser.java
name.gumartinm.weather.information.service.ServiceForecastParser.java
name.gumartinm.weather.information.service.conversor.PressureUnitsConversor.java
name.gumartinm.weather.information.service.conversor.TempUnitsConversor.java
name.gumartinm.weather.information.service.conversor.UnitsConversor.java
name.gumartinm.weather.information.service.conversor.WindUnitsConversor.java
name.gumartinm.weather.information.widget.WidgetConfigure.java
name.gumartinm.weather.information.widget.WidgetIntentService.java
name.gumartinm.weather.information.widget.WidgetProvider.java