⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attachmentsclient.java

📁 《JAVA WEB服务应用开发详解》代码.zip
💻 JAVA
字号:
 //AttachmentsClient.java
      	
 import java.io.*;
	import java.util.*;
	import java.net.*;
	import org.w3c.dom.*;
	import org.xml.sax.*;
	import org.apache.soap.util.xml.*;
	import org.apache.soap.util.mime.*;
	import org.apache.soap.*;
	import org.apache.soap.transport.*;
	import org.apache.soap.encoding.*;
	import org.apache.soap.encoding.soapenc.*;
	import org.apache.soap.rpc.*;
	import org.apache.soap.messaging.*;
	import javax.activation.*;
	import javax.mail.internet.*;
	import javax.xml.parsers.*;
       
       
       public class AttachmentsClient {
       
  	public static void main(String[] args) throws Exception {
  		
  	    if (args.length < 2) {
      	System.err.println ("Usage: java " + AttachmentsClient.class.getName () +
               " SOAP-router-URL envelope-file1 envelope-file1 ... envelope-filen");
     		System.exit (1);
    	     }
  	    
    	    String encodingStyleURI = Constants.NS_URI_SOAP_ENC;
    	    URL url = new URL(args[0]);
            // Build the Message.
            Message msg = new Message();

            try{
            // Add attachments.
            String attachments = "";
            for (int i = 1; i < args.length; i++) {
                ByteArrayDataSource ds =
                    new ByteArrayDataSource(new File(args[i]), null);
                DataHandler dh = new DataHandler(ds);
                MimeBodyPart bp = new MimeBodyPart();
                bp.setDataHandler(dh);
                bp.setFileName(args[i]);
   bp.setHeader(org.apache.soap.Constants.HEADER_CONTENT_LOCATION,
                             "myfile" + (i - 2));
                msg.addBodyPart(bp);
                attachments += "\n<file size=\"" + ds.getSize()
                    + "\" location =\"myfile" + (i - 2) + "\">" + args[i]
                    + "</file>";
            }

            // Build the envelope.
            String xmlmsg = "";
    xmlmsg += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
   xmlmsg += "\n<s:Body>\n<loopProcessor xmlns=\"urn:attachmentstestprocessor\">";
            xmlmsg += attachments;
            xmlmsg += "\n</loopProcessor></s:Body></s:Envelope>";
            DocumentBuilder xdb = XMLParserUtils.getXMLDocBuilder();
            Document doc =
              xdb.parse(new InputSource(new StringReader(xmlmsg)));
            if (doc == null) {
                System.err.println("Failed to parse XML");
                return;
            }
            Envelope msgEnv = Envelope.unmarshall(doc.getDocumentElement());

            // Invoke.
            msg.send(url, "", msgEnv);

            // Receive response as DataHandler.
            printObject(msg.receive());
        
    	} catch(Exception e) {
            e.printStackTrace();
    		}    
      }
      
      
    public static void printObject(DataHandler dh) {

            Object o;
            try {
                o = dh.getContent();
            } catch(IOException ioe) {
                o = ioe;
            }
            System.out.println("DataHandler, name=" + dh.getName()
                               + ", type=" + dh.getContentType()
                               + ", content: (" + o.getClass().getName()
                               + ")\n" + o);
            DataSource ds = dh.getDataSource();
            String fname = "" + System.currentTimeMillis() + ".out";
            System.out.println(" Writing attachment to file: " + fname);
            try {
                ByteArrayDataSource bds = new ByteArrayDataSource(
                    ds.getInputStream(), dh.getContentType());
                bds.writeTo(new FileOutputStream(fname));
            } catch(IOException ioe) {
                System.out.println(ioe);
                ioe.printStackTrace(System.err);
            }

    }
  
  
      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -