📄 httpresponsetostring.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 + -