Andreas Blomqvist wrote:
HiDoing a POST login to a site (which I dont control) and manually redirecting. However I am not getting logged in until I make a second call to the login method. Why? My code for login : private HttpContext login(DefaultHttpClient httpClient, String button, String user, String pass) throws UnsupportedEncodingException, IOException { HttpResponse response = null; HttpEntity entity = null; HttpPost httpost = new HttpPost(BASE_URL + "/index.php?func=do_login"); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("btn_login", button)); nvps.add(new BasicNameValuePair("txt_login", user)); nvps.add(new BasicNameValuePair("psw_password", pass)); httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpContext context = new BasicHttpContext(); response = httpClient.execute(httpost, context); System.out.println("Post status is " + response.getStatusLine()); entity = response.getEntity(); if (entity != null) { entity.consumeContent(); } HttpUriRequest request = (HttpUriRequest) context.getAttribute( ExecutionContext.HTTP_REQUEST); String uri = BASE_URL + request.getURI().toString(); System.out.println("uri in login " + uri); HttpGet redirect = new HttpGet(uri); response = httpClient.execute(redirect, context); System.out.println("Redirect HttpGet status is " + response.getStatusLine()); entity = response.getEntity(); if (entity != null) { entity.consumeContent(); } return context; } After a call to this method I get output: (checking login status is method I made to check for att logout link on the page. [java] Post status is HTTP/1.1 302 [java] uri in login url_to_first_page [java] Redirect HttpGet status is HTTP/1.1 200 [java] Checking login statuts: false Any thoughts? /A
Post wire log http://hc.apache.org/httpcomponents-client/logging.html --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
