I attached a test case that's repeatable for me. Takes 3 requests (of any flavor) to cause the lockup. No idea why.
----- Original Message ----- From: "Thierry Boileau" <[EMAIL PROTECTED]> To: discuss@restlet.tigris.org Sent: Wednesday, September 5, 2007 5:33:02 PM (GMT-0500) America/New_York Subject: Re: issue with org.restlet.Client Hello Nicolas, I've created the issue 357 (http://restlet.tigris.org/issues/show_bug.cgi?id=357). I've tried with a very simple HTTPS server (using jetty server connector) and was not able to reproduce your pb. Could you tell us more about your context : server, client connectors, etc. Did you try to only get the cvs file? Did you try to create a new client instance just for getting the csv file? best regards, Thierry Boileau > Hi, > > first of all, kudos for your great work. We are using your framework > intensively in our production environment and it works like a charm. > > I have stumbled with an issue with org.restlet.Client, that you might be able > to solve. We need to navigate through a website and retrieve a csv file in a > 3-step process: > + POST some credentials, inspect the response for a redirect, > + GET to the redirect and > + GET to a csv resource. > > This is the code that hangs in the last GET for the csv file: > > Form form = new Form(); > form.add("organizationId", "xxxxx"); > form.add("username", "CCCC"); > form.add("password", "VVVVV"); > > Client ebcClient = new Client(Protocol.HTTPS); > Response loginResponse = > ebcClient.post("https://xxxxxxx.com/ebctest/login/LoginProcess.do", > form.getWebRepresentation()); > Reference reference = loginResponse.getRedirectRef(); > ebcClient.get(reference); > String yearMonthDay = "2007/08/28"; > Response reportResponse = > ebcClient.get("https://xxxxxx/DownloadReport/"+yearMonthDay+ > "/overstock_test/PaymentBatchDetailReport.csv"); > > > However the following equivalent code works perfectly fine: > > > HttpClient httpClient = new HttpClient(); > PostMethod httpLoginPost = new > PostMethod("https://xxxxx/ebctest/login/LoginProcess.do"); > NameValuePair[] postData = { > new NameValuePair("organizationId", "xxxxxx"), > new NameValuePair("username", "xxxxxx"), > new NameValuePair("password", "xxxxxx") > }; > > httpLoginPost.setRequestBody(postData); > httpClient.executeMethod(httpLoginPost); > > String redirectLocation = > httpLoginPost.getResponseHeader("location").getValue(); > GetMethod getLogin = new GetMethod(redirectLocation); > httpClient.executeMethod(getLogin); > > String yearMonthDay = "2007/08/28"; > GetMethod csvGet = new > GetMethod("https://xxxxxx/ebctest/DownloadReport/"+yearMonthDay+ > "/overstock_test/PaymentBatchDetailReport.csv"); > > httpClient.executeMethod(csvGet); > > BufferedReader in = new BufferedReader(new > InputStreamReader(csvGet.getResponseBodyAsStream())); > > String line; > while((line = in.readLine()) != null) { > logger.debug(line); > } > httpLoginPost.releaseConnection(); > getLogin.releaseConnection(); > > > This is the log where the org.restlet.Client hangs : > > 2007-08-31 09:25:49,303 [main] DEBUG > org.apache.commons.httpclient.HttpMethodBase - > enter > HttpMethodBase.processResponseHeaders(HttpState, HttpConnection) > 2007-08-31 09:25:49,303 [main] DEBUG > org.apache.commons.httpclient.HttpMethodBase - > enter > HttpMethodBase.processCookieHeaders(Header[], HttpState, HttpConnection) > 2007-08-31 09:25:49,303 [main] DEBUG > org.apache.commons.httpclient.HttpMethodBase - > enter > HttpMethodBase.readResponseBody(HttpState, HttpConnection) > 2007-08-31 09:25:49,304 [main] DEBUG > org.apache.commons.httpclient.HttpMethodBase - > enter HttpMethodBase.readResponseBody(HttpConnection) > 2007-08-31 09:25:49,304 [main] DEBUG > org.apache.commons.httpclient.HttpConnection - > enter HttpConnection.getResponseInputStream() > 2007-08-31 09:25:49,304 [main] DEBUG > org.apache.commons.httpclient.HttpMethodBase - > enter HttpMethodBase.canResponseHaveBody(int) > 2007-08-31 09:25:49,304 [main] DEBUG > org.apache.commons.httpclient.HttpMethodDirector - > Redirect required > 2007-08-31 09:25:55,324 [main] DEBUG > org.apache.commons.httpclient.methods.GetMethod - > enter GetMethod(String) > 2007-08-31 09:25:55,325 [main] DEBUG org.apache.commons.httpclient.HttpClient > - > > enter HttpClient.executeMethod(HttpMethod) > 2007-08-31 09:25:55,325 [main] DEBUG org.apache.commons.httpclient.HttpClient > - > > enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState) > 2007-08-31 09:25:55,326 [main] DEBUG > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - > > enter HttpConnectionManager.getConnectionWithTimeout(HostConfiguration, long) > 2007-08-31 09:25:55,326 [main] DEBUG > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - > > HttpConnectionManager.getConnection: config = > HostConfiguration[host=https://ebctest.cybersource.com], timeout = 0 > 2007-08-31 09:25:55,326 [main] DEBUG > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - > enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration) > 2007-08-31 09:25:55,326 [main] DEBUG > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - > Unable to get a connection, waiting..., > hostConfig=HostConfiguration[host=https://ebctest.cybersource.com] > > > > Thanks > > /Nic > >