diff options
| author | knowcenter <knowcenter@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2007-08-24 11:26:17 +0000 | 
|---|---|---|
| committer | knowcenter <knowcenter@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2007-08-24 11:26:17 +0000 | 
| commit | 35e04b2df4ce2f60368b7ca2d11b54162dcff7f2 (patch) | |
| tree | 5b799a17d82ae1dbe70ddeb3d8e55ba3f4411539 | |
| parent | 2c0e0f40e005b490e39b831f78545bd7d7b74a50 (diff) | |
| download | pdf-as-3-35e04b2df4ce2f60368b7ca2d11b54162dcff7f2.tar.gz pdf-as-3-35e04b2df4ce2f60368b7ca2d11b54162dcff7f2.tar.bz2 pdf-as-3-35e04b2df4ce2f60368b7ca2d11b54162dcff7f2.zip | |
TR: Update zu SwA-Kommunikation mit MOA-SS/SP 
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@196 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
| -rw-r--r-- | src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapConnection.java | 102 | 
1 files changed, 102 insertions, 0 deletions
| diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapConnection.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapConnection.java index 73ef71b..f9051c5 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapConnection.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapConnection.java @@ -5,6 +5,8 @@ package at.knowcenter.wag.egov.egiz.sig.connectors.moa;  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
 +import java.io.IOException;
 +import java.io.InputStream;
  import java.util.Properties;
  import java.util.Vector;
 @@ -16,6 +18,16 @@ import javax.xml.rpc.Service;  import javax.xml.rpc.ServiceFactory;
  import org.apache.axis.message.SOAPBodyElement;
 +import org.apache.commons.httpclient.Header;
 +import org.apache.commons.httpclient.HttpClient;
 +import org.apache.commons.httpclient.HttpException;
 +import org.apache.commons.httpclient.methods.PostMethod;
 +import org.apache.commons.httpclient.methods.multipart.FilePart;
 +import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
 +import org.apache.commons.httpclient.methods.multipart.Part;
 +import org.apache.commons.httpclient.methods.multipart.PartSource;
 +import org.apache.commons.httpclient.methods.multipart.StringPart;
 +import org.apache.commons.httpclient.params.HttpMethodParams;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.xml.serialize.OutputFormat;
 @@ -23,6 +35,7 @@ import org.apache.xml.serialize.XMLSerializer;  import org.w3c.dom.Document;
  import at.knowcenter.wag.egov.egiz.exceptions.WebException;
 +import at.knowcenter.wag.egov.egiz.sig.SignatureData;
  import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUPostConnection;
  /**
 @@ -148,5 +161,94 @@ public final class MOASoapConnection      // }
    }
 +  
 +  public static Properties doPostRequestMultipart(String url, String serviceMode, String request,
 +	      final SignatureData data) throws HttpException, IOException
 +	  {
 +	    log.debug("doPostRequestMultipart:"); //$NON-NLS-1$
 +	    
 +	    // Wrap XMLRequest into SOAP-Body	    
 +	    request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>" +
 +	    		request.substring(request.indexOf("?>")+2)+   // do not forget to eliminate any additional XML-header
 +	    		"</soapenv:Body></soapenv:Envelope>";
 +	    	    
 +	    StringPartMR xmlpart = new StringPartMR("test", request, "UTF-8");  //$NON-NLS-1$//$NON-NLS-2$
 +	    xmlpart.setContentType("text/xml");
 +	    xmlpart.setContentID("<xmlrequest>");	    
 +	    
 +	    // add file to be signed
 +	    final String filename = data.getMimeType().equals("application/pdf") ? "myfile.pdf" : "myfile.txt"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 +	    PartSource ps = new PartSource() {
 +	      public InputStream createInputStream() throws IOException
 +	      {
 +	         return data.getDataSource().createInputStream();
 +	      }
 +
 +	      public String getFileName()
 +	      {
 +	        return filename;
 +	      }
 +
 +	      public long getLength()
 +	      {
 +	        return data.getDataSource().getLength();
 +	      }
 +	    };
 +	    //ByteArrayPartSource baps = new ByteArrayPartSource(filename, data.getData());
 +	    FilePartMR filepart = new FilePartMR("fileupload", ps); //$NON-NLS-1$
 +	    filepart.setContentType(data.getMimeType());
 +	    filepart.setContentID("<fileupload>");
 +	    // this is optional
 +	    // filepart.setCharSet(data.getCharacterEncoding());
 +	    
 +	    Part[] parts = { xmlpart, filepart };
 +
 +	    HttpMethodParams method_params = new HttpMethodParams();
 +	    method_params.setContentCharset("UTF-8"); //$NON-NLS-1$
 +	    
 +	    PostMethod post_method = new PostMethod(url);
 +	    post_method.setParams(method_params);
 +	    
 +
 +	    post_method.addRequestHeader("SOAPAction",serviceMode);
 +	    
 +//	    MultipartRequestEntity mprqe = new MultipartRequestEntity(parts, post_method.getParams());
 +	    MultipartRelatedEntity mprqe = new MultipartRelatedEntity(parts, post_method.getParams());
 +	   mprqe.setContentType("text/xml");
 +	   mprqe.setStartID("<xmlrequest>");
 +	    
 +	    post_method.setRequestEntity(mprqe);
 +	    // post_method.setRequestHeader("Content-Type", "multipart/related; type=\"text/xml\"; boundary=\""+"\"");
 +	    HttpClient http_client = new HttpClient();
 +	    
 +	    int method_response = http_client.executeMethod(post_method);
 +	    log.debug("method_response = " + method_response); //$NON-NLS-1$
 +
 +	    Properties response_properties = new Properties();
 +
 +	    if (log.isDebugEnabled())
 +	    {
 +	      Header[] response_headers = post_method.getResponseHeaders();
 +	      for (int i = 0; i < response_headers.length; i++)
 +	      {
 +	        log.debug("  response_header[" + i + "]: name = " + response_headers[i].getName() + ", value = " + response_headers[i].getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 +	      }
 +	    }
 +	    Header server_header = post_method.getResponseHeader("Server"); //$NON-NLS-1$	       
 +	    
 +	    response_properties.setProperty(BKUPostConnection.RESPONSE_STRING_KEY, server_header.getValue());
 +
 +	    log.debug(post_method.getResponseCharSet());
 +	    if (!post_method.getResponseCharSet().equals("UTF-8")) //$NON-NLS-1$
 +	    {
 +	      log.warn("MOA response charset is not UTF-8!"); //$NON-NLS-1$
 +	    }
 +	    String response_string = post_method.getResponseBodyAsString();
 +
 +	    response_properties.setProperty(BKUPostConnection.RESPONSE_STRING_KEY, response_string);
 +
 +	    log.debug("doPostRequestMultipart finished."); //$NON-NLS-1$
 +	    return response_properties;
 +	  }
  }
 | 
