On Wed, 2008-07-02 at 11:59 +0200, Quintin Beukes wrote:
> Hey,
> 
> Due to our search engine for one of our sites being hosted on a
> separate domain, we can't do AJAX requests to the original domain.
> This isn't much of a problem, as I figured I'd just use HttpClient to
> make a servlet which is a proxy to the Apache server.
> 
> So... to ensure session state is still maintained, which is a
> requirement, I will just proxy the cookies the client sends me as
> well.
> 
> I made the following method (the connection manager and parameters are
> final static members of the class):
> 
>   private HttpEntity proxyRequest(String baseUrl, String
> getParameters, Cookie[] cookies) throws Exception
>   {
>     DefaultHttpClient httpClient = new DefaultHttpClient(connManager,
> httpParams);
>     HttpContext context = new 
> BasicHttpContext(httpClient.getDefaultContext());
>     HttpGet request = new HttpGet(baseUrl + basketUri);
>     CookieStore cookieStore = httpClient.getCookieStore();
> 
>     for (Cookie c : cookies)
>     {
>       BasicClientCookie newCookie = new BasicClientCookie(c.getName(),
> c.getValue());
>       newCookie.setDomain(c.getDomain());
>       newCookie.setPath(c.getPath());
>       newCookie.setComment(c.getComment());
>       if (c.getMaxAge() > 0)
>       {
>         long expiryTime = new Date().getTime() + c.getMaxAge();
>         newCookie.setExpiryDate(new Date(expiryTime));
>       }
>       cookieStore.addCookie(newCookie);
>     }
> 
>     HttpResponse response = httpClient.execute(request, context);
>     HttpEntity entity = response.getEntity();
> 
>     if (entity == null)
>     {
>       throw new NoHttpResponseException("Basket request failed to
> return a response.");
>     }
> 
>     return entity;
>   }
> 
> The Cookie[] I pass in, is an array of cookies are received by
> HttpServletRequest.getCookies().
> 
> I stepped the code, and the addCookie() method is definitely being
> called. When recieving the response on the other side, I make a dump
> of all received cookies to the output. This output is received by
> HttpClient and returned to the servlet's output stream.
> 
> Then what I'm getting is a dump of "0" cookies. So the request is
> successful, but the cookies added to the store is not being sent to
> the client.
> 
> Can anyone see what I'm doing wrong?
> 

Quintin,

Adding cookies to the cookie store is just a part of the story. A cookie
need to match the origin server in order to be included in subsequent
HTTP requests. Apparently there is something wrong with the domain or
the expiry date. 

Take a look at the RequestAddCookies protocol interceptor

Hope this helps

Oleg


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to