Example usage for org.springframework.web.context.request WebRequest getHeaderNames

List of usage examples for org.springframework.web.context.request WebRequest getHeaderNames

Introduction

In this page you can find the example usage for org.springframework.web.context.request WebRequest getHeaderNames.

Prototype

Iterator<String> getHeaderNames();

Source Link

Document

Return a Iterator over request header names.

Usage

From source file:org.fao.geonet.api.records.formatters.FormatterApi.java

private String getXmlFromUrl(ServiceContext context, String lang, String url, WebRequest request)
        throws IOException, URISyntaxException {
    String adjustedUrl = url;/*from   w w w .j ava  2  s  . c  om*/
    if (!url.startsWith("http")) {
        adjustedUrl = context.getBean(SettingManager.class).getSiteURL(lang) + url;
    } else {
        final URI uri = new URI(url);
        Set allowedRemoteHosts = context.getApplicationContext().getBean("formatterRemoteFormatAllowedHosts",
                Set.class);
        Assert.isTrue(allowedRemoteHosts.contains(uri.getHost()),
                "xml.format is not allowed to make requests to " + uri.getHost());
    }

    HttpUriRequest getXmlRequest = new HttpGet(adjustedUrl);
    final Iterator<String> headerNames = request.getHeaderNames();
    while (headerNames.hasNext()) {
        String headerName = headerNames.next();
        final String[] headers = request.getHeaderValues(headerName);
        for (String header : headers) {
            getXmlRequest.addHeader(headerName, header);
        }
    }

    GeonetHttpRequestFactory requestFactory = context.getBean(GeonetHttpRequestFactory.class);
    final ClientHttpResponse execute = requestFactory.execute(getXmlRequest);
    if (execute.getRawStatusCode() != 200) {
        throw new IllegalArgumentException("Request " + adjustedUrl + " did not succeed.  Response Status: "
                + execute.getStatusCode() + ", status text: " + execute.getStatusText());
    }
    return new String(ByteStreams.toByteArray(execute.getBody()), Constants.CHARSET);
}