XMLHTTPClientpublic class XMLHTTPClient extends Object
Constructors Summary |
---|
protected XMLHTTPClient()
boolean quick_test = false;
try{
long req_id = SystemTime.getCurrentTime();
if ( quick_test ){
SimpleXMLParserDocument res =
sendRequest( "<REQUEST>"+
"<METHOD>getDownloads</METHOD>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
}else{
SimpleXMLParserDocument res =
sendRequest( "<REQUEST>"+
"<METHOD>getSingleton</METHOD>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String connection_id = res.getChild( "_connection_id" ).getValue().trim();
String plugin_if_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getShortCuts</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
/* short cuts
String sc_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + sc_oid + "</_object_id></OBJECT>" +
"<METHOD>getDownload[byte[]]</METHOD>"+
"<PARAMS>"+
"<ENTRY>6495034E54A2B374560389FAE3812A6191C614BA</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String dl_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + dl_oid + "</_object_id></OBJECT>" +
"<METHOD>setPriority[int]</METHOD>"+
"<PARAMS>"+
"<ENTRY>2</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
*/
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getDownloadManager</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String dl_man_oid = res.getChild( "_object_id" ).getValue().trim();
// tracker torrents
/*
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getTracker</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String tracker_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + tracker_oid + "</_object_id></OBJECT>" +
"<METHOD>getTorrents</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
*/
/*
SimpleXMLParserDocumentNode[] kids = res.getChildren();
for (int i=0;i<kids.length;i++){
String dl_oid = kids[i].getChild( "_object_id" ).getValue().trim();
System.out.println( "kid: oid = " + dl_oid );
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + dl_oid + "</_object_id></OBJECT>" +
"<METHOD>stop</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
}
// IP Filter
/*
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getIPFilter</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String ip_filter_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>setInRangeAddressesAreAllowed[boolean]</METHOD>"+
"<PARAMS>"+
"<ENTRY>true</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>getInRangeAddressesAreAllowed</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>isInRange[String]</METHOD>"+
"<PARAMS>"+
"<ENTRY>9.2.3.4</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
*/
/*
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>getRanges</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
SimpleXMLParserDocumentNode[] kids = res.getChildren();
for (int i=0;i<kids.length;i++){
String range_oid = kids[i].getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + range_oid + "</_object_id></OBJECT>" +
"<METHOD>delete</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
}
*/
/*
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>createAndAddRange[String,String,String,boolean]</METHOD>"+
"<PARAMS>"+
"<ENTRY>XML Test</ENTRY>"+
"<ENTRY>1.1.1.1</ENTRY>"+
"<ENTRY>1.1.1.2</ENTRY>"+
"<ENTRY>false</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + ip_filter_oid + "</_object_id></OBJECT>" +
"<METHOD>save</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
*/
/*
// config stuff
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getPluginconfig</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String config_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + config_oid + "</_object_id></OBJECT>" +
"<PARAMS>"+
"<ENTRY index=\"1\">12</ENTRY>"+
"<ENTRY index=\"0\">Max Upload Speed KBs</ENTRY>"+
// "<ENTRY>Max Upload Speed KBs</ENTRY>"+
// "<ENTRY>12</ENTRY>"+
"</PARAMS>" +
"<METHOD>setParameter[String,int]</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
*/
/* stuff for adding a torrent */
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + plugin_if_oid + "</_object_id></OBJECT>" +
"<METHOD>getTorrentManager</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String torrent_man_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + torrent_man_oid + "</_object_id></OBJECT>" +
"<METHOD>getURLDownloader[URL]</METHOD>"+
"<PARAMS><ENTRY>http://torrents.aelitis.com:88/torrents/Rob%20Costlow.torrent</ENTRY></PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String torrent_downloader_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + torrent_downloader_oid + "</_object_id></OBJECT>" +
"<METHOD>download[String]</METHOD>"+
"<PARAMS>"+
"<ENTRY>fallback</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
String torrent_oid = res.getChild( "_object_id" ).getValue().trim();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + torrent_oid + "</_object_id></OBJECT>" +
"<METHOD>writeToFile[File]</METHOD>"+
"<PARAMS>"+
"<ENTRY>C:\\temp\\fred.torrent</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + dl_man_oid + "</_object_id></OBJECT>" +
"<METHOD>addDownload[Torrent,File,File]</METHOD>"+
"<PARAMS>" +
"<ENTRY><OBJECT><_object_id>" + torrent_oid + "</_object_id></OBJECT></ENTRY>" +
"<ENTRY>C:\\temp\\fred.torrent</ENTRY>"+
"<ENTRY>C:\\temp</ENTRY>"+
"</PARAMS>" +
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + dl_man_oid + "</_object_id></OBJECT>" +
"<METHOD>getDownloads</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
SimpleXMLParserDocumentNode[] kids = res.getChildren();
for (int i=0;i<kids.length;i++){
String dl_oid = kids[i].getChild( "_object_id" ).getValue().trim();
System.out.println( "kid: oid = " + dl_oid );
res = sendRequest(
"<REQUEST>" +
"<OBJECT><_object_id>" + dl_oid + "</_object_id></OBJECT>" +
"<METHOD>getDiskManagerFileInfo</METHOD>"+
"<CONNECTION_ID>" + connection_id + "</CONNECTION_ID>"+
"<REQUEST_ID>" + (req_id++) + "</REQUEST_ID>"+
"</REQUEST>");
res.print();
}
}
}catch( Throwable e ){
Debug.printStackTrace( e );
}
|
Methods Summary |
---|
public static void | main(java.lang.String[] args)
new XMLHTTPClient();
| protected org.gudy.azureus2.plugins.utils.xml.simpleparser.SimpleXMLParserDocument | sendRequest(java.lang.String request)
String resp = sendRequestSupport( request );
System.out.println( "got:" + resp );
return( SimpleXMLParserDocumentFactory.create( resp ));
| protected java.lang.String | sendRequestSupport(java.lang.String request)
try{
URL url = new URL( "http://127.0.0.1:6884/process.cgi" );
// System.out.println( "doc base = " + url );
HttpURLConnection con;
if ( url.getProtocol().equalsIgnoreCase("https")){
// see ConfigurationChecker for SSL client defaults
URLConnection url_con = url.openConnection();
// Opera doesn't return a javax class
if ( url_con.getClass().getName().startsWith( "javax")){
HttpsURLConnection ssl_con = (HttpsURLConnection)url_con;
// allow for certs that contain IP addresses rather than dns names
ssl_con.setHostnameVerifier(
new HostnameVerifier()
{
public boolean
verify(
String host,
SSLSession session )
{
return( true );
}
});
con = ssl_con;
}else{
con = (HttpURLConnection)url_con;
}
}else{
con = (HttpURLConnection) url.openConnection();
}
con.setRequestProperty("Connection", "close" );
con.setRequestMethod( "POST" );
con.setAllowUserInteraction( true );
con.setDoInput( true );
con.setDoOutput( true );
con.connect();
PrintWriter os = null;
try{
os = new PrintWriter( new OutputStreamWriter( con.getOutputStream() , Constants.DEFAULT_ENCODING ));
os.print( request );
os.flush();
}finally{
if ( os != null ){
os.close();
}
}
InputStream is = null;
try{
is = con.getInputStream();
int content_length = con.getContentLength();
byte[] data = new byte[1024];
int num_read = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ( num_read < content_length ){
try{
int len = is.read(data);
if ( len > 0 ){
baos.write(data, 0, len);
num_read += len;
}else if ( len == 0 ){
Thread.sleep(20);
}else{
break;
}
}catch (Exception e){
Debug.printStackTrace( e );
break;
}
}
return( new String( baos.toByteArray(), Constants.DEFAULT_ENCODING ));
}finally{
if ( is != null ){
is.close();
}
}
}catch( Throwable e ){
throw( new RuntimeException( "whoops", e ));
}
|
|