POST/GET 从远程服务器下载文件

封装的工具类,get 下载调用 downloadURL(url),post 下载调用 POSTMethod()

POST/GET 从远程服务器下载文件

import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.BufferedHttpEntity;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import java.io.ByteArrayOutputStream;
import java.util.*;

/**
 * User: Cheng
 * Date: 2019/4/22
 * Time: 17:33
 * Description: No Description
 */
public class PostUtil {
    /**
     *  以 Post 方法访问
     *
     * @param url      请求地址
     * @param argsMap  携带的参数
     * @param content  内容
     * @return String  返回结果
     * @throws Exception
     */
    public static byte[] POSTMethod(String url, Map<String, Object> argsMap, String content) throws Exception {
//        argsMap,content 都可以带参,二选一
        byte[] dataByte = null;
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        if (MapUtils.isNotEmpty(argsMap)) {
            // 设置参数
            UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(setHttpParams(argsMap), "UTF-8");
            httpPost.setEntity(encodedFormEntity);
        }
        if (StringUtils.isNotEmpty(content)) {            httpPost.setEntity(new ByteArrayEntity(content.getBytes()));
        }
        //  执行请求
        HttpResponse httpResponse = httpClient.execute(httpPost);
        //  获取返回的数据
        HttpEntity httpEntity = httpResponse.getEntity();
        if (httpEntity != null) {            byte[] responseBytes = getData(httpEntity);
            dataByte = responseBytes;
            httpPost.abort();
        }
        // 将字节数组转换成为字符串
//        String result = bytesToString(dataByte);
//        return result;
        return dataByte;
    }

    /**
     *  获取 Entity 中数据
     *
     * @param httpEntity
     * @return
     * @throws Exception
     */
    public static byte[] getData(HttpEntity httpEntity) throws Exception {        BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(httpEntity);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bufferedHttpEntity.writeTo(byteArrayOutputStream);
        byte[] responseBytes = byteArrayOutputStream.toByteArray();
        return responseBytes;
    }

    /**
     *  设置 HttpPost 请求参数
     * @param argsMap
     * @return BasicHttpParams
     */
    private static List<BasicNameValuePair> setHttpParams(Map<String, Object> argsMap){        List<BasicNameValuePair> nameValuePairList = new ArrayList<BasicNameValuePair>();
        // 设置请求参数
        if (argsMap!=null && !argsMap.isEmpty()) {            Set<Map.Entry<String, Object>> set = argsMap.entrySet();
            Iterator<Map.Entry<String, Object>> iterator = set.iterator();
            while(iterator.hasNext()){                Map.Entry<String, Object> entry = iterator.next();
                BasicNameValuePair basicNameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
                nameValuePairList.add(basicNameValuePair);
            }
        }
        return nameValuePairList;
    }

    public static byte[] downloadURL(String url) throws Exception {        byte[] dataByte = null;
        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity entity = httpResponse.getEntity();// 获取返回数据
        if (entity != null) {
//             根据 entity 创建 BufferedHttpEntity 与创建流对象
            BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(entity);
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//           将 BufferedHttpEntity 写到流中
            bufferedHttpEntity.writeTo(byteArrayOutputStream);
//             将流转换成 byte[]
            byte[] responseBytes = byteArrayOutputStream.toByteArray();
            dataByte = responseBytes;
            httpGet.abort();    //(终止)程序
        }
        return dataByte;
    }
}


手机扫描二维码访问

本文标题:《POST/GET 从远程服务器下载文件》作者:极四维博客
原文链接:https://cway.top/post/153.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合