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

📄 httpresponsetostring.java

📁 提供ESB 应用mule源代码 提供ESB 应用mule源代码
💻 JAVA
字号:
/* * $Id: HttpResponseToString.java 11454 2008-03-20 14:29:51Z tcarlson $ * -------------------------------------------------------------------------------------- * 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.transformer.TransformerException;import org.mule.api.transport.OutputHandler;import org.mule.transformer.AbstractTransformer;import org.mule.transport.http.HttpConstants;import org.mule.transport.http.HttpResponse;import org.mule.transport.http.ResponseWriter;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.Iterator;import org.apache.commons.httpclient.ChunkedOutputStream;import org.apache.commons.httpclient.Header;import org.apache.commons.io.output.ByteArrayOutputStream;/** * Converts an Http Response object to String. Note that the response headers are * preserved. */public class HttpResponseToString extends AbstractTransformer{    public HttpResponseToString()    {        registerSourceType(HttpResponse.class);        setReturnClass(String.class);    }    /**     * Perform the transformation to always return a String object     */    protected Object doTransform(Object src, String encoding) throws TransformerException    {        try        {            HttpResponse response = (HttpResponse)src;            ByteArrayOutputStream bos = new ByteArrayOutputStream(8192);            OutputStream outstream = bos;            ResponseWriter writer = new ResponseWriter(outstream, encoding);            writer.println(response.getStatusLine());            Iterator item = response.getHeaderIterator();            while (item.hasNext())            {                Header header = (Header)item.next();                writer.print(header.toExternalForm());            }            writer.println();            writer.flush();            if (response.hasBody())            {                OutputHandler handler = response.getBody();                Header transferenc = response.getFirstHeader(HttpConstants.HEADER_TRANSFER_ENCODING);                if (transferenc != null)                {                    response.removeHeaders(HttpConstants.HEADER_CONTENT_LENGTH);                    if (transferenc.getValue().indexOf(HttpConstants.TRANSFER_ENCODING_CHUNKED) != -1)                    {                        outstream = new ChunkedOutputStream(outstream);                    }                }                handler.write(RequestContext.getEvent(), outstream);                if (outstream instanceof ChunkedOutputStream)                {                    ((ChunkedOutputStream)outstream).finish();                }            }            outstream.flush();            bos.flush();            byte[] result = bos.toByteArray();            outstream.close();            writer.close();            bos.close();            String output = null;            try            {                output = new String(result, encoding);            }            catch (UnsupportedEncodingException uee)            {                // I believe this is never reached since a TransformerExcpetion                // is thrown before at new ResponseWriter(outstream, encoding) if                // encoding is not supported                output = new String(result);            }            return output;        }        catch (IOException e)        {            throw new TransformerException(this, e);        }    }}

⌨️ 快捷键说明

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