Thursday, February 26, 2009

Super awesome Java form POST command line program



/*

This posts data to myserver to a Struts action, sending form data which then
gets transmitted to the crystal reports server. If the connection to the
crystal server can't be made, an error is displayed, and email(s) are sent.

Sample run:

[lupsha@myserver ~]$ /opt/SDK/jdk/bin/javac SimplePoster.java
[lupsha@myserver ~]$ /opt/SDK/jdk/bin/java SimplePoster
OK: Crystal server is UP
[lupsha@myserver ~]$




*/

import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.lang.Runtime;


public class SimplePoster
{

public SimplePoster()
{
try {

String postUrlStr = "http://MyServer/MyApp/mystrutsaction.do";

URL url = null;
url = new URL( postUrlStr );


URLConnection urlConnection = url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)");
urlConnection.setRequestProperty("Referer", "http://www.google.com" );
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


String myForm = "showCriteria=Yes&rawData=Yes&methodID=*&status=*&action=Submit";
urlConnection.setRequestProperty("Content-Length", myForm.length() + "");


OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));

writer.write(myForm);
writer.flush();
writer.close();


InputStream ins = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
String str = "";
StringBuffer returnStringBuffer = new StringBuffer("");
while((str = reader.readLine()) != null)
{
returnStringBuffer.append(str);
}

// System.out.println( returnStringBuffer.toString() );
if( returnStringBuffer.indexOf( "CrystalCompositeViewState" ) != -1 )
System.out.println("OK: Crystal server is UP");
else
{
System.out.println("BAD: Crystal server is DOWN!");
String command = "";
command += "/bin/echo \"Crystal server is down\"";
command += " | mail -s \"Crystal Server Down\" alan.lupsha@my.awesome.domain";
Runtime.getRuntime().exec(command);
}


} catch( Exception e )
{
System.out.println("Exception: " + e.toString() );
}


}



public static void main(String args[])
{
SimplePoster simplePoster = new SimplePoster();
}


}

No comments:

Post a Comment