Java examples for Network:apache http
HttpClient fluent API can be used to handle HTTP responses without buffering content body in memory apache http client
/*/*from w w w .j a va 2s. c o m*/ * -------------------------------------------------------------------- * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. * -------------------------------------------------------------------- * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.http.client.fluent; import java.io.IOException; import java.nio.charset.Charset; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpResponseException; import org.apache.http.client.ResponseHandler; import org.apache.http.entity.ContentType; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * This example demonstrates how the HttpClient fluent API can be used to handle HTTP responses * without buffering content body in memory. */ public class FluentResponseHandling { public static void main(String[] args) throws Exception { Document result = Request.Get("http://somehost/content").execute() .handleResponse(new ResponseHandler<Document>() { @Override public Document handleResponse( final HttpResponse response) throws IOException { StatusLine statusLine = response.getStatusLine(); HttpEntity entity = response.getEntity(); if (statusLine.getStatusCode() >= 300) { throw new HttpResponseException(statusLine .getStatusCode(), statusLine .getReasonPhrase()); } if (entity == null) { throw new ClientProtocolException( "Response contains no content"); } DocumentBuilderFactory dbfac = DocumentBuilderFactory .newInstance(); try { DocumentBuilder docBuilder = dbfac .newDocumentBuilder(); ContentType contentType = ContentType .getOrDefault(entity); if (!contentType .equals(ContentType.APPLICATION_XML)) { throw new ClientProtocolException( "Unexpected content type:" + contentType); } Charset charset = contentType.getCharset(); if (charset == null) { charset = Consts.ISO_8859_1; } return docBuilder.parse(entity.getContent(), charset.name()); } catch (ParserConfigurationException ex) { throw new IllegalStateException(ex); } catch (SAXException ex) { throw new ClientProtocolException( "Malformed XML document", ex); } } }); // Do something useful with the result System.out.println(result); } }