`

HttpClient(发送字符串,multipart, 参数等)

    博客分类:
  • java
 
阅读更多
备注:httpclient4.5 发送MultiPart/Param/String
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
import org.apache.http.impl.nio.client.HttpAsyncClients;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;

/**
 * Http 工具类
 *
 */
public class HttpHelper {
    /**
     *发送HttpPost方法
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @param requestBody
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPost(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpPost.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            httpPost.setEntity(entity);
        }

        return httpClient.execute(httpPost);
    }
    /**
     *异步发送HttpPost方法
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @param requestBody
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPostAsyn(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpAsyncClient httpAsyncClient = HttpAsyncClients.createDefault();
        HttpPost httpPost = new HttpPost(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpPost.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            httpPost.setEntity(entity);
        }
        HttpResponse response = null;
        try {
            httpAsyncClient.start();
            Future<HttpResponse> future = httpAsyncClient.execute(httpPost, null);
            response = future.get();// 获取结果
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }
    /**
     *发送 httpPostMultiPartAsyn方法
     *
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPostMultiPartAsyn(final String url, final Map<String, String> headerMap, final HttpEntity httpEntity) {
        new Thread(){
            @Override
            public void run() {
                httpPostMultiPart(url, headerMap, httpEntity);
            }
        }.start();
        return null;
    }
    /**
     *发送httpPostMultiPart方法
     *
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPostMultiPart(String url, Map<String, String> headerMap, HttpEntity httpEntity) {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        HttpResponse response = null;
        if (headerMap != null) {
            for (String key : headerMap.keySet()) {
                httpPost.setHeader(key, headerMap.get(key));
            }
        }
        httpPost.setEntity(httpEntity);
        try {
            httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

    /**
     *发送httpPostParam
     *
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPostParam(String url, Map<String, String> headerMap, List<NameValuePair> nvps) {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        HttpResponse response = null;
        if (headerMap != null) {
            for (String key : headerMap.keySet()) {
                httpPost.setHeader(key, headerMap.get(key));
            }
        }
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        try {
            httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

    /**
     * 发送HttpPut方法
     *
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @param requestBody
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPut(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPut httpPut = new HttpPut(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpPut.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            httpPut.setEntity(entity);
        }

        return httpClient.execute(httpPut);
    }

    /**
     * 发送HttpGet方法
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @return
     * @throws IOException
     */
    public static HttpResponse httpGet(String requestUrl, Map<String, String> requestHeaderMap) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpGet.setHeader(key, requestHeaderMap.get(key));
            }
        }
        return httpClient.execute(httpGet);
    }

    /**
     * 发送HttpDelete方法
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @return
     * @throws IOException
     */
    public static HttpResponse httpDelete(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        ImHttpDelete imHttpDelete = new ImHttpDelete(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                imHttpDelete.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            imHttpDelete.setEntity(entity);
        }

        return httpClient.execute(imHttpDelete);
    }


    static class ImHttpDelete extends HttpEntityEnclosingRequestBase {
        public final static String METHOD_NAME = "DELETE";

        public ImHttpDelete() {
            super();
        }

        public ImHttpDelete(final URI uri) {
            super();
            setURI(uri);
        }

        /**
         * @throws IllegalArgumentException if the uri is invalid.
         */
        public ImHttpDelete(final String uri) {
            super();
            setURI(URI.create(uri));
        }

        @Override
        public String getMethod() {
            return METHOD_NAME;
        }
    }
}

分享到:
评论

相关推荐

    c#模拟post发送json和multipart/form-data格式

    要将一个C#对象序列化为JSON字符串,可以使用`JsonConvert.SerializeObject()`方法;反序列化则使用`JsonConvert.DeserializeObject()`。 例如: ```csharp using Newtonsoft.Json; public class User { public ...

    HttpClientUtils

    1. **参数传递**:HttpClientUtils支持传递URL参数,它可以方便地将键值对转换为HTTP请求中的查询字符串,使得发送带有参数的GET请求或者POST请求变得更加简单。 2. **文件上传**:HttpClientUtils集成了文件上传...

    C#使用multipart/form-data示例

    2. **创建边界字符串**:在`multipart/form-data`中,你需要一个唯一的字符串作为分隔符,即边界。这个边界字符串应该在请求头中设置,并在数据的每个部分之间插入。 3. **构造请求体**:在C#中,你需要手动构造...

    c#下post multipart/form-data和JSON

    2. 发送JSON数据的POST请求:创建一个`StringContent`实例,设置其内容为序列化的JSON字符串,然后用`HttpClient`发送请求。 ```csharp using (var client = new HttpClient()) { var jsonContent = new String...

    c#post multipart/form-data和JSON数据

    在C#中,我们可以使用HttpClient类来构造并发送这样的POST请求。首先,需要创建一个MultipartFormDataContent对象,然后添加键值对或文件流。例如: ```csharp using System.Net.Http; using System.IO; var ...

    HttpClient.zip

    3. **请求参数传递**:可以通过URL查询字符串、POST请求体或multipart/form-data方式发送请求参数。 4. **连接管理**:HttpClient允许你配置连接池,以复用TCP连接,减少网络延迟,提高性能。 5. **超时控制**:...

    java map转Multipart/form-data类型body实例

    在Java中,可以使用`***.HttpURLConnection`或者第三方库如Apache的`HttpClient`来发送带有`multipart/form-data`的请求。然而,Java标准库并没有直接提供将`Map`对象转换为这种类型数据的方法,因此需要我们自己...

    ASP.NET-WebApi-MultipartDataMediaFormatter:用于在发送和接收多部分编码的表单数据时绑定自定义类型(包括文件)

    此媒体类型格式化程序也可以用于发送对象(使用HttpClient),并将对象自动序列化为multipart / form-data。 该格式化程序可以处理: 自定义不可枚举类(支持深层嵌套类) 所有可以从字符串转换为字符串的简单类型...

    Base64.java及其使用方法

    在Android开发中,如果需要通过HTTP客户端(如HttpClient)将图片上传到服务器,由于HTTP协议本身只支持ASCII字符,不能直接传输二进制数据,因此通常会先将图片数据转化为Base64字符串,再以文本形式发送,服务器端...

    C#中在WebClient中使用post发送数据实现方法

    2. 构建POST数据字符串。这通常涉及到将表单字段及其对应的值用"&"分隔,并对特殊字符进行URL编码,以确保数据的正确性。C#中的`HttpUtility.UrlEncode`方法用于此目的: ```csharp StringBuilder postData = new ...

    winform上传文件,带进度条,用一般处理程序ashx接收,传有参数。源代码例子下载

    例如,可以将参数作为查询字符串的一部分,或者封装在POST请求体中。 8. **服务器端处理**: - 在ASHX处理程序中,需要解析`HttpContext.Current.Request.InputStream`以获取文件数据,同时可以从`Request.Form`中...

    JAVA模拟http上传文件_代码男_新浪博客

    6. **边界(Boundary)**:在Multipart/form-data中,每个部分都由一个唯一的边界字符串标识,用于区分不同的数据段。在Java代码中,我们需要生成一个唯一的边界,并在HTTP请求的Content-Type头和每个部分的开始和...

    java实现利用HTTP基于servlet上传文件至服务器[参考].pdf

    - 先构建一个字符串,包含文件的Content-Disposition(定义数据的名称和文件名)和Content-Type(定义文件类型)。 - 将这个字符串写入到`DataOutputStream`,然后读取文件内容并写入到输出流。 - 最后,添加一个...

    Android上传图片至网络端

    Base64编码将二进制数据转化为ASCII字符串,简单但数据量会增加约33%;Multipart则是HTTP协议中用于上传文件的标准,更适用于大文件传输。 3. **处理多线程**:由于Android主线程不允许进行耗时操作,包括网络请求...

    Pro.Jakarta.Commons.rar

    1. **Commons Lang**:提供了一系列高级的字符串处理、日期时间操作、数学计算以及反射相关的工具类。例如,`StringUtils`提供了丰富的字符串操作方法,`DateUtils`则简化了日期时间的操作。 2. **Commons ...

    android上传文件jar

    "com-codec"标签可能是指编解码相关的组件,因为文件上传通常涉及到数据编码,比如将文件内容转换为字节数组或Base64字符串。在上传过程中,Android开发者可能会使用Java的内置Codec类或第三方库,如Gson或Jackson,...

    java上传文件到服务器

    在提供的文件名`b8e1e3910e214bea80caa15f58b3f233`中,看起来像是一个哈希值或随机字符串,它可能是实际文件的唯一标识符或临时存储位置。在实际操作中,这可能会用于跟踪上传的文件或者作为服务器端存储文件的命名...

    数据宝图片上传接口文档1

    请求参数包括appkey、callback和data三个部分,其中appkey为登录平台-&gt;我的数据-&gt;找到接口下面字符串为平台key,callback为支持jsonp跨域请求的参数,data为文件流存入requestBody中。 响应参数包括code、success、...

    httpmime-4.1.1

    接下来,httpmime-4.1.1还提供了FileBody和StringBody等类,用于封装文件和字符串内容,作为MIME实体的一部分。这些类简化了将本地文件或字符串内容转换为HTTP请求体的过程。例如,FileBody允许你直接指定一个文件...

    通过WebClient的Postdata将上传文件功能放到另一个网站上去操作

    4. **处理响应**:`UploadData`方法会返回服务器的响应,通常是一个字符串,可以根据需要进行解析,如检查返回的状态码或提取返回的数据。 需要注意的是,这个例子中的边界字符串(`boundary`)是用来分割不同的...

Global site tag (gtag.js) - Google Analytics