use of org.expath.httpclient.model.exist.EXistResult in project exist by eXist-db.
the class SendRequestFunction method sendRequest.
private Sequence sendRequest(final NodeValue request, final String href, final Sequence bodies) throws XPathException {
HttpRequest req = null;
try {
final org.expath.tools.model.Sequence b = new EXistSequence(bodies, getContext());
final Element r = new EXistElement(request, getContext());
final RequestParser parser = new RequestParser(r);
req = parser.parse(b, href);
// override anyway it href exists
if (href != null && !href.isEmpty()) {
req.setHref(href);
}
final URI uri = new URI(req.getHref());
final EXistResult result = sendOnce(uri, req, parser);
return result.getResult();
} catch (final URISyntaxException ex) {
throw new XPathException(this, "Href is not valid: " + req != null ? req.getHref() : "" + ". " + ex.getMessage(), ex);
} catch (final HttpClientException hce) {
throw new XPathException(this, hce.getMessage(), hce);
}
}
use of org.expath.httpclient.model.exist.EXistResult in project exist by eXist-db.
the class SendRequestFunction method sendOnce.
/**
* Send one request, not following redirect but handling authentication.
*
* Authentication may require to reply to an authentication challenge,
* by sending again the request, with credentials.
*/
private EXistResult sendOnce(final URI uri, final HttpRequest request, final RequestParser parser) throws HttpClientException {
EXistResult result = new EXistResult(getContext());
HttpConnection conn = null;
try {
conn = new ApacheHttpConnection(uri);
final HttpResponse response = request.send(result, conn, parser.getCredentials());
if (response.getStatus() == HttpStatus.SC_UNAUTHORIZED && parser.getCredentials() != null) {
// requires authorization, try again with auth
result = new EXistResult(getContext());
request.send(result, conn, parser.getCredentials());
}
} finally {
if (conn != null) {
try {
conn.disconnect();
} catch (final HttpClientException hcee) {
logger.warn(hcee.getMessage(), hcee);
}
}
}
return result;
}
Aggregations