Re: POST data with Java
adrian.bartholomew@gmail.com wrote:
Hi. I'm trying to fill out online forms automatically with Java.
Things like posting to classified ads that would include signing in
and uploading pics etc. without having to go to the sites themselves.
I understand that I may have to obtain the POST variables.
Can anyone help me or point me in the right direction?
You can use (Http)URLConnection, but I will strongly
recommend something a bit more high level like Jakarta
HttpClient.
See a code snippet below.
Arne
=============================================
import java.io.IOException;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
public class Login {
private HttpClient client;
public Login() {
client = new HttpClient();
}
public void login(String url,
String userField, String userValue,
String passField, String passValue) {
NameValuePair[] nvp = new NameValuePair[2];
nvp[0] = new NameValuePair(userField, userValue);
nvp[1] = new NameValuePair(passField, passValue);
post(url, nvp);
}
public String get(String url) {
GetMethod met = new GetMethod(url);
try {
client.executeMethod(met);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return met.getResponseBodyAsString();
}
public String post(String url, NameValuePair[] nvp) {
PostMethod met = new PostMethod(url);
if(nvp != null) {
met.setRequestBody(nvp);
}
try {
client.executeMethod(met);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return met.getResponseBodyAsString();
}
public static void main(String[] args) {
Login lgi = new Login();
lgi.login("http://arne:8080/useradmin/Login",
"username", args[0],
"password", args[1]);
System.out.println(lgi.get("http://arne:8080/useradmin/UserAdmin.jsp"));
}
}