package de.kp.wsclient.soap; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.content.Context; import de.kp.wsclient.security.SecCryptoParams; public class SOAPMessenger { private SOAPSenderImpl soapSender; private boolean initialized; private static SOAPMessenger instance = new SOAPMessenger(); private SOAPMessenger() {} public static SOAPMessenger getInstance() { if (instance == null) instance = new SOAPMessenger(); return instance; } public void init(Context context, SecCryptoParams cryptoParams) throws Exception { /* * The SOAPSenderImpl is initialized only once */ if (initialized == false) { this.soapSender = new SOAPSenderImpl(context); this.soapSender.init(cryptoParams); } initialized = true; } /** * @param message * @param endpoint * @return * @throws Exception */ public SOAPMessage sendRequest(SOAPMessage message, String endpoint) throws Exception { if (initialized == false) throw new Exception("[SOAPMessenger] Is not initialized"); SOAPMessage responseMessage = null; // send SOAP message to web service identified by its url SOAPResponse soapResponse = this.soapSender.doSoapRequest(message, endpoint); int httpStatus = soapResponse.getHttpStatus(); if (httpStatus == 200) { InputStream data = soapResponse.getData(); if (data == null) throw new Exception("No response data retrieved."); responseMessage = new SOAPMessage(data); } return responseMessage; } }