Thanks Claus,

  In the meantime, I realize that my scenario is complex and probably beyond
the current state of what Camel can support so I moved to straight
HttpClient usage.  I have:
URI parameters
https security
Login/Password

Here is working code that you can use if you need.

// Basically fetch the file from a system that doesn't email attachments,
but rather sends
// an email with a link in it that you need to https login to.
private void processNoAttachmentEmails(Exchange exchange, String body,
                        String from) throws Exception {
                HttpClient client = new HttpClient();

                         // Spring bean containg all security information
for this server looked
                         // up by the email's from header
                ServerBean server = getServerBean(from);
                          // process the mail body to find the "click here"
to get your report
                String uri = getUrlFromMailBody(body, server);

                URL url = new URL(uri);
                String query = url.getQuery();
                String baseurl = uri.substring(0, uri.indexOf('?'));
                
                String username = server.getUserName();
                String password = server.getUserPassword();
                String domain = server.getAdserverDomain();
                String realm = server.getDomainRealm();

                GetMethod method = null;
                try {
                        Credentials defaultcreds = new 
UsernamePasswordCredentials(
                                        username, password);
                        client.getState().setCredentials(new AuthScope(domain, 
443, realm),
                                        defaultcreds);
                        client.getParams().setAuthenticationPreemptive(true);
                        method = new GetMethod(baseurl);
                        method.setQueryString(URIUtil.encodeQuery(query, 
"UTF-8"));
                        
                        method.setFollowRedirects(true);
                        method.setDoAuthentication(true);
                        int status = client.executeMethod(method);
                        long length = method.getResponseContentLength();
                        if (status != 401 && length > 0) {
                                InputStream stream = 
method.getResponseBodyAsStream();
                                processSaveCsv(exchange, stream, 
server.getServerName());
                        } else {
                                log.error("cannot retrieve Report from server " 
+ status
                                                + " " + length);
                        }
                } catch (Exception e) {
                        log.error("unable to get email server report file" + e);
                } finally {
                        // always release the connection after we're done
                        if (method != null)
                                method.releaseConnection();
                }

        }
-- 
View this message in context: 
http://www.nabble.com/camel-http-instructions-for-Query-string-handling-don%27t-work-tp20048788s22882p20054996.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to