HttpClient发送http请求以及上传文件

来源:互联网 发布:手机版淘宝怎么开店 编辑:程序博客网 时间:2024/05/17 09:38

1.封装请求体

封装普通请求体
private UrlEncodedFormEntity getUrlEntry(Map<String, Object> param) throws UnsupportedEncodingException {        List<NameValuePair> params = new ArrayList<NameValuePair>();        Iterator<String> iterator = param.keySet().iterator();        while (iterator.hasNext()) {            String key = iterator.next();            params.add(new BasicNameValuePair(key, (String) param.get(key)));        }        UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(params, "UTF-8");        return uefEntity;    }
封装上传文件请求体
private MultipartEntity getMutipartEntry(Map<String, Object> param, File file) throws UnsupportedEncodingException {        if (file == null) {            throw new IllegalArgumentException("文件不能为空");        }        FileBody fileBody = new FileBody(file);        FormBodyPart filePart = new FormBodyPart("file", fileBody);        MultipartEntity multipartEntity = new MultipartEntity();        multipartEntity.addPart(filePart);        Iterator<String> iterator = param.keySet().iterator();        while (iterator.hasNext()) {            String key = iterator.next();            FormBodyPart field = new FormBodyPart(key, new StringBody((String) param.get(key)));            multipartEntity.addPart(field);        }        return multipartEntity;    }

2.发送请求

发送普通请求
public String postUrl(String url,Map<String, Object> param) throws ClientProtocolException, IOException {        String res = null;        CloseableHttpClient httpClient = HttpClients.createDefault();        HttpPost httppost = new HttpPost(url);        UrlEncodedFormEntity uefEntity = getUrlEntry(param);        httppost.setEntity(uefEntity);        CloseableHttpResponse response = httpClient.execute(httppost);        HttpEntity entity = response.getEntity();        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {            res = EntityUtils.toString(entity, "UTF-8");            response.close();        } else {            res = EntityUtils.toString(entity, "UTF-8");            response.close();            throw new IllegalArgumentException(res);        }        return res;    }
发送上传文件请求
public String postFile(String url,Map<String, Object> param, File file) throws ClientProtocolException, IOException {        String res = null;        CloseableHttpClient httpClient = HttpClients.createDefault();        HttpPost httppost = new HttpPost(url);        httppost.setEntity(getMutipartEntry(param,file));        CloseableHttpResponse response = httpClient.execute(httppost);        HttpEntity entity = response.getEntity();        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {            res = EntityUtils.toString(entity, "UTF-8");            response.close();        } else {            res = EntityUtils.toString(entity, "UTF-8");            response.close();            throw new IllegalArgumentException(res);        }        return res;    }
0 0