nexpose_java_api
nexpose_java_api copied to clipboard
Library assumes XML being returned, not always true
The library currently assumes that the response will be XML, this isn't true for ad-hoc reports. Reports are returned in a multipart MIME message. The library currently breaks wen trying to pull down an ad-hoc report with a SAX error.
The following code repro's the issue:
import org.rapid7.nexpose.api.APIException; import org.rapid7.nexpose.api.APIResponse; import org.rapid7.nexpose.api.APISession; import org.rapid7.nexpose.api.APISession.APISupportedVersion; import org.rapid7.nexpose.api.ReportAdhocGenerateRequest; import org.rapid7.nexpose.api.ReportConfigRequest; import org.rapid7.nexpose.api.ReportListingRequest; import org.rapid7.nexpose.api.generators.IContentGenerator; import org.rapid7.nexpose.api.generators.ReportFiltersContentGenerator; import org.rapid7.nexpose.api.generators.ReportFiltersContentGenerator.ReportFilter; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; public class Main { /** * @param args */ public static void main(String[] args) throws Exception { URL url; APISession session; try { url = new URL("https://127.0.0.1:3780"); session = new APISession(url, "xml", APISupportedVersion.V1_2, "username", "password"); } catch (MalformedURLException ex) { throw new Exception(ex); } try { session.login(null); } catch (Exception e) { System.exit(1); } String sessionID = session.getSessionID(); ReportFiltersContentGenerator filters = new ReportFiltersContentGenerator(); Listf = new ArrayList (); f.add(new ReportFilter("site", "1")); filters.setFilters(f); ReportAdhocGenerateRequest req = new ReportAdhocGenerateRequest(sessionID, null, "pdf", "audit-report", null, filters); //String fdsa = req.toXML(); APIResponse resp = session.executeAPIRequest(req); String requestXML = req.toXML(); resp = session.sendRawXMLRequest(requestXML, APISupportedVersion.V1_0); String xml = resp.getResponse(); System.out.println(xml); } ///////////////////////////////////////////////////////////////////////// // Public methods ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // Non-public methods ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // Non-public fields ///////////////////////////////////////////////////////////////////////// }