Hi Andreas,
See below, though I haven't used HttpClient 4 for form posting, so I
could be way off base.
On Feb 11, 2010, at 11:54pm, Andreas Blomqvist wrote:
Hi all
New to this list and I am not sure if my mails are getting thru.
Anyway,
got problem with posting a form and loggin in. The post goes thru
and I get
a 302 back. The HttpClient should handle the redirect by default
right?
The redirect on a POST isn't the same as a redirect on a GET. In the
case of the GET, the redirect can be automatically handled since (a) a
GET should have no side effects, and (b) you're using the same
GetMethod to make another request.
A POST that returns a redirect needs to be followed by a GET with the
new location.
The
problem is that I am not getting logged in on the site until i make
a new
call with a new HttpClient. Everyhing is in a servlet, and first
call to the
servlet doesnt logg me in, but the next one does.
You shouldn't need a new HttpClient, but you should set up & reuse a
local context so that any cookies returned by the POST are available
for the GET.
-- Ken
My post form code:
As you can see i'm trying to manually redirect also but i doesnt
make any
difference.
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);
entity = response.getEntity();
if (entity != null) {
entity.consumeContent();
}
HttpUriRequest request = (HttpUriRequest) context.getAttribute(
ExecutionContext.HTTP_REQUEST);
String uri = BASE_URL + request.getURI().toString();
HttpGet redirect = new HttpGet(uri);
httpClient.execute(redirect, context);
return context;
thanks
--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c w e b m i n i n g
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]