package de.superx.bin; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; import java.util.logging.Logger; import javax.xml.soap.SOAPConnection; import javax.xml.soap.SOAPConnectionFactory; import javax.xml.soap.SOAPMessage; import de.memtext.util.LogUtils; public class WebserviceChecker extends AbstractWebserviceClient { public static String[] args; private static final Logger log = Logger.getLogger("wc"); public void run() { String testparam = ""; if (args.length > 3) testparam = args[3]; if (testparam.equals("multipletests")) multipletests(); else { singlerun(); } } private void singlerun() { SOAPMessage soapResponse = null; try { // Create SOAP Connection SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); // Send SOAP Message to SOAP Server StringBuffer url = readFile(new File(args[1])); SOAPMessage sr = getSoapMessageFromString(readFile(new File(args[0])).toString()); addAuthentification(sr); sr.getMimeHeaders().addHeader("SOAPAction", "http://sap.com/xi/WebService/soap1.1"); soapResponse = soapConnection.call(sr, adaptURL(url.toString())); ByteArrayOutputStream out = new ByteArrayOutputStream(); soapResponse.writeTo(out); String strMsg = new String(out.toByteArray()); /** * old code problem with namespace when using OpenJDK 15 Transformer transformer * = TransformerFactory.newInstance() .newTransformer(); * * // optional indenting transformer.setOutputProperty(OutputKeys.INDENT, * "yes"); transformer.setOutputProperty( * "{http://xml.apache.org/xslt}indent-amount", "2"); //new * DOMSource(soapResponse.getSOAPPart(). * * transformer.transform(new DOMSource(soapResponse.getSOAPPart()), new * StreamResult(new File(args[2]))); * */ BufferedWriter writer = new BufferedWriter(new FileWriter(args[2])); writer.write(format(strMsg)); writer.close(); soapConnection.close(); } catch (Exception e) { System.out.println("Es ist ein Fehler aufgetreten: " + e); try { System.out.println(soapResponse.getSOAPPart().getChildNodes().item(0)); } catch (Exception e1) { } e.printStackTrace(); } } private void multipletests() { System.out.println("Versuche ggfs. mehrfach aufzurufen"); try { LogUtils.initRawFileDateTime("wc", "WebserviceClient.log", 100000, 1, true, false); StringBuffer url = readFile(new File(args[1])); File f = createSoapFile(readFile(new File(args[0])).toString(), adaptURL(url.toString())); System.out.println("Outfile: " + f); } catch (Exception e) { e.printStackTrace(); } } public static void main(String a[]) { args = a; if (args.length < 3 || args.length > 4) { System.out .println("Usage path/to/envelope.xml path/to/urlfile /path/to/ouputfile.xml optional:multipleruns"); System.exit(-1); } WebserviceChecker wc = new WebserviceChecker(); wc.run(); } }