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

📄 httpsoapsender.java

📁 bpel执行引擎用来执行bpel业务流程
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements.  See the NOTICE file * distributed with this work for additional information * regarding copyright ownership.  The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License.  You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied.  See the License for the * specific language governing permissions and limitations * under the License. */package org.apache.ode.tools.sendsoap.cline;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.UsernamePasswordCredentials;import org.apache.commons.httpclient.auth.AuthScope;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.StringRequestEntity;import org.apache.ode.tools.ToolMessages;import org.apache.ode.utils.StreamUtils;import org.apache.ode.utils.cli.Argument;import org.apache.ode.utils.cli.BaseCommandlineTool;import org.apache.ode.utils.cli.CommandlineFragment;import org.apache.ode.utils.cli.ConsoleFormatter;import org.apache.ode.utils.cli.FlagWithArgument;import org.apache.ode.utils.cli.Fragments;import org.apache.ode.utils.msg.CommonMessages;import org.apache.ode.utils.msg.MessageBundle;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * <p> * Commandline tool to send the contents of a (binary) file to a URL. * </p> */public class HttpSoapSender extends BaseCommandlineTool {    private static final int RETURN_BAD_URL = 2;    private static final int RETURN_SEND_ERROR = 3;    private static final int RETURN_CANT_READ = 4;    private static final int RETURN_CANT_WRITE = 5;    private static final int RETURN_BAD_PORT = 6;    private static Pattern SEQ = Pattern.compile("\\$sequence\\$");    private static final ToolMessages MESSAGES = MessageBundle.getMessages(ToolMessages.class);    private static final CommonMessages COMMON = MessageBundle.getMessages(CommonMessages.class);    private static final Argument URL_A = new Argument("url","the URL to send the SOAP to.",false);    private static final Argument FILE_A = new Argument("file","the file that contains the SOAP to send.",false);    private static final FlagWithArgument PROXY_SERVER = new FlagWithArgument("s", "proxyServer",            "server to use for proxy authentication.",true);    private static final FlagWithArgument PROXY_PORT = new FlagWithArgument("p", "proxyPort",            "port to use for proxy authentication.",true);    private static final FlagWithArgument PROXY_USER = new FlagWithArgument("u", "username",            "username to use for proxy authentication.",true);    private static final FlagWithArgument PROXY_PASS = new FlagWithArgument("w", "password",            "password to use for proxy authentication.",true);    private static final FlagWithArgument SOAP_ACTION = new FlagWithArgument("a", "soapAction",            "SOAP action to include in the message header.",true);    private static final FlagWithArgument OUTFILE_FWA = new FlagWithArgument("o","outfile",            "a file to write the output to (instead of standard out).",true);    private static final Fragments CLINE = new Fragments(new CommandlineFragment[] {            OUTFILE_FWA, URL_A, FILE_A, PROXY_SERVER, PROXY_PORT, PROXY_USER, PROXY_PASS, SOAP_ACTION    });    private static final String SYNOPSIS =            "send the contents of a file to a URL as a SOAP request and print the response (if any) to the console or a file.";    protected static String getProgramName() {      return "sendsoap";    }    public static String doSend(URL u, InputStream is, String proxyServer, int proxyPort,                              String username, String password, String soapAction) throws IOException {        ByteArrayOutputStream bos = new ByteArrayOutputStream(8192);        StreamUtils.copy(bos, is);        String now = Long.toString(System.currentTimeMillis());        int c = 1;        String data = new String(bos.toByteArray());        Matcher m = SEQ.matcher(data);        StringBuffer sb = new StringBuffer(8192);        while (m.find()) {            m.appendReplacement(sb, now + "-" + c++);        }        m.appendTail(sb);        HttpClient httpClient = new HttpClient();        PostMethod httpPostMethod = new PostMethod(u.toExternalForm());        if (proxyServer != null && proxyServer.length() > 0) {            httpClient.getState().setCredentials(new AuthScope(proxyServer, proxyPort),                    new UsernamePasswordCredentials(username, password));            httpPostMethod.setDoAuthentication(true);        }        if (soapAction == null) soapAction = "";        httpPostMethod.setRequestHeader("SOAPAction", "\"" + soapAction + "\"");        httpPostMethod.setRequestHeader("Content-Type", "text/xml");        httpPostMethod.setRequestEntity(new StringRequestEntity(sb.toString()));        httpClient.executeMethod(httpPostMethod);        return httpPostMethod.getResponseBodyAsString() + "\n";    }    public static void main(String[] argv) {        if (argv.length == 0 || HELP.matches(argv)) {            ConsoleFormatter.printSynopsis(getProgramName(),SYNOPSIS,new Fragments[] {                    CLINE,HELP});            System.exit(0);        } else if (!CLINE.matches(argv)) {            consoleErr("INVALID COMMANDLINE: Try \"" + getProgramName() + " -h\" for help.");            System.exit(-1);        }        File fout = null;        if (OUTFILE_FWA.isSet()) {            String outfile = OUTFILE_FWA.getValue();            fout = new File(outfile);        }        URL u = null;        try {            u = new URL(URL_A.getValue());        } catch (MalformedURLException mue) {            consoleErr(MESSAGES.msgBadUrl(URL_A.getValue(),mue.getMessage()));            System.exit(RETURN_BAD_URL);        }        InputStream is = null;        String src = FILE_A.getValue();        if (src.equals("-")) {            is = System.in;        } else {            File f = new File(src);            try {                is = new FileInputStream(f);            } catch (FileNotFoundException fnfe) {                consoleErr(COMMON.msgCannotReadFromFile(src));                System.exit(RETURN_CANT_READ);            }        }        boolean hasProxy = PROXY_SERVER.getValue() != null && PROXY_SERVER.getValue().length() > 0;        if (hasProxy) {            String proxyPort = PROXY_PORT.getValue();            try {                Integer.parseInt(proxyPort);            } catch (NumberFormatException e) {                consoleErr(COMMON.msgBadPort(proxyPort));                System.exit(RETURN_BAD_PORT);            }        }        initLogging();        try{            String result = doSend(u,is, PROXY_SERVER.getValue(), hasProxy ? Integer.parseInt(PROXY_PORT.getValue()) : 0,                    PROXY_USER.getValue(), PROXY_PASS.getValue(), SOAP_ACTION.getValue());            if (OUTFILE_FWA.isSet()) {                FileOutputStream fos = new FileOutputStream(fout);                fos.write(result.getBytes());                fos.close();            } else System.out.println(result);        } catch (IOException ioe) {            consoleErr(MESSAGES.msgIoErrorOnSend(ioe.getMessage()));            System.exit(RETURN_SEND_ERROR);        }    }}

⌨️ 快捷键说明

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