Hi, all.
I have previously successfully used the HTTP component with proxy info to poll
a site.
Bu now I'm running into a "connection reset" problem when polling another site
that has a slightly different connection strategy.
----------------------------------------
The HTTP configuration for the first site was totally straight-forward:
url.full = https://bar.com/query?<query-params>
proxy.params = authenticationPreemptive=true
&authMethod=Basic&proxyAuthScheme=http
&authUsername=<user>&authPassword=<password>
&proxyAuthHost=<proxy-host>&proxyAuthPort=<proxy-port>
and I was able to simply put the following in a timer route:
.to("{{url.full}}&{{proxy.params}}")
----------------------------------------
The second site requires a two-step login where you create an HTTP connection
to:
https://www.<company>/ajaxauth/login
and then send the credentials and query together to the same HTTP connection:
identity=<user>&password=<password>&query=https://<query>
You can combine both steps into a single command. For example, in curl this
works:
% curl https://www.<company>/ajaxauth/login -d
'identity=<user>&password=<password>&query=https://<query>'
And in fact, in a non-proxy environment, I was able to successfully poll the
endpoint in Camel doing:
url.login = https://www.<company>/ajaxauth/login
url.post = identity=<user>&password=<password>&query=https://<query>
and putting this in my timer route:
.setHeader(Exchange.CONTENT_TYPE,
constant("application/x-www-form-urlencoded"))
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setBody(simple("{{url.post}}")) // makes the HTTP call a POST
.to("{{url.login}}")
----------------------------------------
But in a proxy environment, the second route no longer works.
With proxy info set to:
proxy.params = authenticationPreemptive=true
&authMethod={{proxy.method}}&proxyAuthScheme={{proxy.scheme}}
&proxyAuthHost={{proxy.host}}&proxyAuthPort={{proxy.port}}
I tried several combinations of where to put the proxy info; for example:
// .setBody(simple("{{url.post}}")) // makes the HTTP call a POST
.setBody(simple("{{url.post}}&{{proxy.params}}")) // makes the HTTP call a
POST
.to("{{url.login}}&{{proxy.params}}")
but nothing worked. Everything throws a java.net.SocketException: Connection
reset.
I tried some other stuff, like setting the several "timeout" HTTP component
parameters to 0 to make them infinite timeouts, but that didn't work either.
Thanks for any help.