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

📄 objecttohttpclientmethodrequest.java

📁 提供ESB 应用mule源代码 提供ESB 应用mule源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: ObjectToHttpClientMethodRequest.java 13054 2008-10-10 21:45:36Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.http.transformers;import org.mule.RequestContext;import org.mule.api.MuleEvent;import org.mule.api.MuleMessage;import org.mule.api.config.MuleProperties;import org.mule.api.transformer.TransformerException;import org.mule.api.transport.OutputHandler;import org.mule.transformer.AbstractMessageAwareTransformer;import org.mule.transport.NullPayload;import org.mule.transport.http.HttpConnector;import org.mule.transport.http.HttpConstants;import org.mule.transport.http.StreamPayloadRequestEntity;import org.mule.transport.http.i18n.HttpMessages;import org.mule.util.StringUtils;import org.mule.util.expression.ExpressionEvaluatorManager;import java.io.InputStream;import java.io.Serializable;import java.io.UnsupportedEncodingException;import java.net.URI;import java.net.URLEncoder;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.apache.commons.httpclient.HttpMethod;import org.apache.commons.httpclient.HttpVersion;import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;import org.apache.commons.httpclient.methods.DeleteMethod;import org.apache.commons.httpclient.methods.EntityEnclosingMethod;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.HeadMethod;import org.apache.commons.httpclient.methods.InputStreamRequestEntity;import org.apache.commons.httpclient.methods.OptionsMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.PutMethod;import org.apache.commons.httpclient.methods.StringRequestEntity;import org.apache.commons.httpclient.methods.TraceMethod;import org.apache.commons.httpclient.params.HttpMethodParams;import org.apache.commons.lang.SerializationUtils;/** * <code>ObjectToHttpClientMethodRequest</code> transforms a MuleMessage into a * HttpClient HttpMethod that represents an HttpRequest. */public class ObjectToHttpClientMethodRequest extends AbstractMessageAwareTransformer{    public ObjectToHttpClientMethodRequest()    {        setReturnClass(HttpMethod.class);        registerSourceType(MuleMessage.class);        registerSourceType(byte[].class);        registerSourceType(String.class);        registerSourceType(InputStream.class);        registerSourceType(OutputHandler.class);        registerSourceType(NullPayload.class);    }    protected int addParameters(String queryString, PostMethod postMethod, MuleMessage msg)    {        // Parse the HTTP argument list and convert to a NameValuePair        // collection        if (StringUtils.isBlank(queryString))        {            return 0;        }        String currentParam;        int equals;        equals = queryString.indexOf("&");        if (equals > -1)        {            currentParam = queryString.substring(0, equals);            queryString = queryString.substring(equals + 1);        }        else        {            currentParam = queryString;            queryString = StringUtils.EMPTY;        }        int parameterIndex = -1;        while (StringUtils.isNotBlank(currentParam))        {            String paramName, paramValue;            equals = currentParam.indexOf("=");            if (equals > -1)            {                paramName = currentParam.substring(0, equals);                paramValue = currentParam.substring(equals + 1);                //Run query params through the expression evaluator//                Object temp = ExpressionEvaluatorManager.evaluate(paramValue, msg, "$[", true);//                if (temp != null)//                {//                    //Process param collections//                    if (temp instanceof List)//                    {//                        StringBuffer buf = new StringBuffer();//                        List list = (List) temp;//                        for (Iterator iterator = list.iterator(); iterator.hasNext();)//                        {//                            Object object = iterator.next();//                            buf.append(object).append(",");//                        }//                        parameterIndex++;//                        postMethod.addParameter(paramName, buf.toString());//                    }//                    else if (temp instanceof Map)//                    {//                        Map map = (Map) temp;//                        for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();)//                        {//                            Map.Entry entry = (Map.Entry) iterator.next();//                            parameterIndex++;//                            postMethod.addParameter(entry.getKey().toString(), entry.getValue().toString());//                        }//                    }//                    else//                    {//                        parameterIndex++;//                        postMethod.addParameter(paramName, temp.toString());//                    }//                }//                else//                {                    parameterIndex++;                    postMethod.addParameter(paramName, paramValue);                //}            }            equals = queryString.indexOf("&");            if (equals > -1)            {                currentParam = queryString.substring(0, equals);                queryString = queryString.substring(equals + 1);            }            else            {                currentParam = queryString;                queryString = StringUtils.EMPTY;            }        }        return parameterIndex + 1;    }    public Object transform(MuleMessage msg, String outputEncoding) throws TransformerException    {        Object src = msg.getPayload();        String endpoint = msg.getStringProperty(MuleProperties.MULE_ENDPOINT_PROPERTY, null);        if (endpoint == null)        {            throw new TransformerException(                    HttpMessages.eventPropertyNotSetCannotProcessRequest(                            MuleProperties.MULE_ENDPOINT_PROPERTY), this);        }        String method = msg.getStringProperty(HttpConnector.HTTP_METHOD_PROPERTY, "POST");        try        {            //Allow Expressions to be embedded            endpoint = endpoint.replaceAll("%23", "#");            endpoint = ExpressionEvaluatorManager.parse(endpoint, msg, true);            URI uri = new URI(endpoint);            HttpMethod httpMethod;            if (HttpConstants.METHOD_GET.equals(method))            {                httpMethod = new GetMethod(uri.toString());                String paramName = URLEncoder.encode(msg.getStringProperty(HttpConnector.HTTP_GET_BODY_PARAM_PROPERTY,                                                                           HttpConnector.DEFAULT_HTTP_GET_BODY_PARAM_PROPERTY), outputEncoding);                String paramValue = URLEncoder.encode(src.toString(), outputEncoding);                String query = uri.getRawQuery();                if (!(src instanceof NullPayload) && !StringUtils.EMPTY.equals(src))                {                    if (query == null)                    {                        query = paramName + "=" + paramValue;                    }                    else                    {                        query += "&" + paramName + "=" + paramValue;                    }                }                httpMethod.setQueryString(query);            }            else if (HttpConstants.METHOD_POST.equalsIgnoreCase(method))            {                PostMethod postMethod = new PostMethod(uri.toString());                String paramName = msg.getStringProperty(HttpConnector.HTTP_POST_BODY_PARAM_PROPERTY, null);                if (paramName == null)                {                    // Call method to manage the parameter array                    addParameters(uri.getQuery(), postMethod, msg);                    setupEntityMethod(src, outputEncoding, msg, uri, postMethod);                }                else                {                    postMethod.addParameter(paramName, src.toString());                }                httpMethod = postMethod;            }            else if (HttpConstants.METHOD_PUT.equalsIgnoreCase(method))            {

⌨️ 快捷键说明

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