camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jpcook <jonathan.c...@erars.plus.com>
Subject Re: Http Endpoint
Date Fri, 08 May 2009 14:12:40 GMT

I have successfully created a simple unit test testing a get using the apache
http client without camel.

public static void main(String[] args) {
		// TODO Auto-generated method stub
		HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod("http://www.google.co.uk");
 
        HostConfiguration config = client.getHostConfiguration();
        config.setProxy(PROXY_HOST, PROXY_PORT);       
 
        try {
            client.executeMethod(method);
 
            if (method.getStatusCode() == HttpStatus.SC_OK) {
                String response = method.getResponseBodyAsString();
                System.out.println("Response = " + response);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            method.releaseConnection();
        }
    }    

The above works nicely. However I'm struggling to put this back into my
configure method with camel.

public void configure() {
            	HttpClient client = new HttpClient();
            	client.getHostConfiguration().setProxy("PROXY_HOST",
PROXY_PORT);
            	HttpEndpoint endpoint =
context.getEndpoint("http://www.google.co.uk",HttpEndpoint.class);            	
            	BasicAuthenticationHttpClientConfigurer config = new
BasicAuthenticationHttpClientConfigurer("","");
            	config.configureHttpClient(client);
            	endpoint.setHttpClientConfigurer(config);            	
            			
            	from("direct:start")
                .setHeader(HttpConstants.HTTP_METHOD,
constant(org.apache.camel.component.http.HttpMethods.GET))
                    .to("http://www.google.co.uk").to("mock:results");
            }

The problem I have is that the setHttpClientConfigurer takes a
HttpClientConfigurer which is an interface and the only implementation is
the BasicAuthenticationHttpClientConfigurer which has to have a username and
password which I don't require. I thought I could maybe hack around it above
but it doesn't work.

The question is should I create my own subclass of HttpClientConfigurer or
am I going about this completely the wrong way? Or maybe it is better for me
to write my own HttpProducer/Consumer or custom processor which would be a
bit of a shame.

Thanks


jpcook wrote:
> 
> And is it possible to get at the Apache HttpClient via the Camel Http
> endpoint?
> 
> Claus Ibsen-2 wrote:
>> 
>> On Thu, May 7, 2009 at 6:37 PM, jpcook <jonathan.cook@erars.plus.com>
>> wrote:
>>>
>>> Hello,
>>>
>>> I am playing around with the http endpoint in camel 2 and I thought a
>>> good
>>> starting point would be to run the testHttpGet() in
>>> http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/HttpGetTest.java
>>>
>>> So nothing happens. It just hangs. I suspect this might be because I
>>> need to
>>> configure a proxy but I'm not sure how to do that and I can't find any
>>> examples really apart from an old post but again it isn't clear to me.
>>>
>>> This is the configure method:
>>> @Override
>>>    protected RouteBuilder createRouteBuilder() throws Exception {
>>>        return new RouteBuilder() {
>>>            public void configure() {
>>>                from("direct:start")
>>>                .setHeader(HttpConstants.HTTP_METHOD,
>>> constant(org.apache.camel.component.http.HttpMethods.GET))
>>>                    .to("http://www.google.co.uk").to("mock:results");
>>>            }
>>>        };
>>>    }
>>>
>>> I also tried specifying the time out in the endpoint eg)
>>> "http://www.google.co.uk?httpClient.soTimeout(5000)"
>> You should set it with = as parameter, its like URI parameters.
>> "http://www.google.co.uk?httpClient.soTimeout=5000"
>> 
>> 
>> 
>>>
>>> But that didn't do anything. I wasn't sure if there was a way I could at
>>> least get something back.
>>>
>>> I've also read this useful page. Maybe it would be useful to have an
>>> example
>>> as most corporations will be using proxy servers.
>>> http://camel.apache.org/http.html
>> Yeah socket proxy in Java kinda sucks as you often need to set it with
>> system properties.
>> 
>> Maybe  the HTTP client have nice configuration for proxy. Feel free to
>> look at Apache HTTP Client how to work with proxy.
>> And report your findings, then we can improve Camel to ease the proxy
>> configuration.
>> 
>> 
>>>
>>> Thanks
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Http-Endpoint-tp23430772p23430772.html
>>> Sent from the Camel - Users (activemq) mailing list archive at
>>> Nabble.com.
>>>
>>>
>> 
>> 
>> 
>> -- 
>> Claus Ibsen
>> Apache Camel Committer
>> 
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>> Apache Camel Reference Card:
>> http://refcardz.dzone.com/refcardz/enterprise-integration
>> Interview with me:
>> http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Http-Endpoint-tp23430772p23446776.html
Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.


Mime
View raw message