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]