More fluent API tweaks; added web site content
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1195162 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
41cfb9bbea
commit
cc7f8c248f
|
@ -64,7 +64,7 @@ public class FluentExecutor {
|
|||
// as an HTML form and save the result to the file
|
||||
executor.execute(Request.Post("http://somehost/some-form")
|
||||
.addHeader("X-Custom-header", "stuff")
|
||||
.proxy(new HttpHost("myproxy", 8080))
|
||||
.viaProxy(new HttpHost("myproxy", 8080))
|
||||
.bodyForm(Form.form().add("username", "vip").add("password", "secret").build())
|
||||
).saveContent(new File("result.dump"));
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public class FluentRequests {
|
|||
// as an HTML form and save the result to the file
|
||||
Request.Post("http://somehost/some-form")
|
||||
.addHeader("X-Custom-header", "stuff")
|
||||
.proxy(new HttpHost("myproxy", 8080))
|
||||
.viaProxy(new HttpHost("myproxy", 8080))
|
||||
.bodyForm(Form.form().add("username", "vip").add("password", "secret").build())
|
||||
.execute().saveContent(new File("result.dump"));
|
||||
}
|
||||
|
|
|
@ -250,14 +250,10 @@ public class Request {
|
|||
|
||||
//// HTTP connection route operations
|
||||
|
||||
public Request proxy(final HttpHost proxy) {
|
||||
public Request viaProxy(final HttpHost proxy) {
|
||||
return config(ConnRoutePNames.DEFAULT_PROXY, proxy);
|
||||
}
|
||||
|
||||
public Request noProxy() {
|
||||
return removeConfig(ConnRoutePNames.DEFAULT_PROXY);
|
||||
}
|
||||
|
||||
//// HTTP entity operations
|
||||
|
||||
public Request body(final HttpEntity entity) {
|
||||
|
|
|
@ -121,6 +121,11 @@ public class Response {
|
|||
|
||||
public void saveContent(final File file) throws IOException {
|
||||
assertNotConsumed();
|
||||
StatusLine statusLine = response.getStatusLine();
|
||||
if (statusLine.getStatusCode() >= 300) {
|
||||
throw new HttpResponseException(statusLine.getStatusCode(),
|
||||
statusLine.getReasonPhrase());
|
||||
}
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
try {
|
||||
HttpEntity entity = this.response.getEntity();
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
~~ ====================================================================
|
||||
~~ 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/>.
|
||||
|
||||
----------
|
||||
HttpComponents Fluent HC Module
|
||||
----------
|
||||
----------
|
||||
----------
|
||||
|
||||
Fluent HC
|
||||
|
||||
This module provides an easy to use facade API for HttpClient based on the concept of
|
||||
a fluent interface. Fluent HC exposes only the most fundamental functions of HttpClient
|
||||
and is likely to be suitable mostly for simple use cases that do not require the full
|
||||
flexibility of HttpClient. For instance, Fluent HC API relieves the users from having
|
||||
to deal with resource deallocation and connection management. In most cases, though,
|
||||
this comes at a price of having to buffer content of response messages in memory. However,
|
||||
users can still use custom response handlers to process response streams of arbitrary
|
||||
length.
|
||||
|
||||
----------------------------------
|
||||
String result1 = Request.Get("http://somehost/")
|
||||
.version(HttpVersion.HTTP_1_1)
|
||||
.connectTimeout(1000)
|
||||
.socketTimeout(1000)
|
||||
.viaProxy(new HttpHost("myproxy", 8080))
|
||||
.execute().returnContent().asString();
|
||||
|
||||
String result2 = Request.Post("http://somehost/do-stuff")
|
||||
.version(HttpVersion.HTTP_1_1)
|
||||
.useExpectContinue()
|
||||
.viaProxy(new HttpHost("myproxy", 8080))
|
||||
.bodyForm(Form.form().add("username", "vip").add("password", "secret").build())
|
||||
.execute().returnContent().asString();
|
||||
----------------------------------
|
||||
|
||||
----------------------------------
|
||||
Document result3 = Request.Get("http://somehost/content")
|
||||
.execute().handleResponse(new ResponseHandler<Document>() {
|
||||
|
||||
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);
|
||||
}
|
||||
String charset = contentType.getCharset();
|
||||
if (charset == null) {
|
||||
charset = HTTP.DEFAULT_CONTENT_CHARSET;
|
||||
}
|
||||
return docBuilder.parse(entity.getContent(), charset);
|
||||
} catch (ParserConfigurationException ex) {
|
||||
throw new IllegalStateException(ex);
|
||||
} catch (SAXException ex) {
|
||||
throw new ClientProtocolException("Malformed XML document", ex);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
----------------------------------
|
||||
|
||||
Project reports:
|
||||
|
||||
{{{./apidocs/index.html}Javadocs}}
|
||||
|
||||
{{{./xref/index.html}Project sources}}
|
||||
|
||||
{{{./dependencies.html}Dependencies}}
|
||||
|
||||
{{{./issue-tracking.html}Issue Tracking}}
|
|
@ -0,0 +1 @@
|
|||
@import url("../../../css/hc-maven.css");
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
====================================================================
|
||||
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/>.
|
||||
-->
|
||||
|
||||
<project name="HttpClient">
|
||||
|
||||
<body>
|
||||
<menu name="HttpClient Overview">
|
||||
<item name="Description" href="../index.html"/>
|
||||
<item name="Examples" href="../examples.html"/>
|
||||
</menu>
|
||||
<menu ref="modules" />
|
||||
<menu ref="reports"/>
|
||||
</body>
|
||||
</project>
|
Loading…
Reference in New Issue