HttpClient doPost doGet 请求 返回内存流

来源:互联网 发布:一部电脑管两家淘宝店 编辑:程序博客网 时间:2024/05/22 06:26

import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ContentProducer;import org.apache.http.entity.EntityTemplate;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;/** * http invoker for doPost request or doGet request, return memory stream * <code>OutputStream</code>,ie. <code>ByteArrayOutputStream</code> *  *  * @author  * @see org.apache.http.client.HttpClient */public class HttpInvoker{/** * doGet方式访问URL *  * @param url * @return OutputStream */public static OutputStream doGet(String url){HttpClient httpclient = new DefaultHttpClient();OutputStream os = null;try{HttpGet httpget = new HttpGet(url);HttpResponse response = httpclient.execute(httpget);HttpEntity entity = response.getEntity();if (entity != null){InputStream instream = entity.getContent();os = new ByteArrayOutputStream();int temp = 0;while ((temp = instream.read()) != -1){os.write(temp);}os.flush();os.close();return os;}}catch (Exception e){}finally{httpclient.getConnectionManager().shutdown();}return null;}/** * http url request with parameter map *  * @param url server url * @param parameterMap Parameters * @return OutputStream */public static OutputStream doPostWithUrlParams(String url,Map<String , Object> parameterMap){List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();for (Map.Entry<String , Object> element : parameterMap.entrySet()){nameValuePairs.add(new BasicNameValuePair(element.getKey(), String.valueOf(element.getValue())));}try{return doPost(url, new UrlEncodedFormEntity(nameValuePairs));}catch (UnsupportedEncodingException e){}return null;}/** * post方式写对象流到服务端 *  * @param url server url * @param obj Object * @return OutputStream */public static OutputStream doPostWithObject(String url, final Object obj){ContentProducer cp = new ContentProducer(){// 二进制流public void writeTo(OutputStream outstream) throws IOException{ObjectOutputStream oos = new ObjectOutputStream(outstream);oos.writeObject(obj);oos.flush();oos.close();}};return doPost(url, new EntityTemplate(cp));}/** *  * httpClient 执行post请求 返回 OutputStream对象 *  * @param url String * @param entity HttpEntity * @return OutputStream */private static OutputStream doPost(String url, HttpEntity entity){HttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost(url);OutputStream os = null;post.setEntity(entity);try{HttpResponse response = client.execute(post);HttpEntity resEntity = response.getEntity();InputStream in = resEntity.getContent();if (resEntity != null){os = new ByteArrayOutputStream();int temp = 0;while ((temp = in.read()) != -1){os.write(temp);}os.flush();os.close();EntityUtils.consume(resEntity);return os;}}catch (Exception e){}finally{client.getConnectionManager().shutdown();}return null;}}


0 0
原创粉丝点击