`

HttpClient发送请求公共方法

阅读更多
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.inspur.inserver.util.exception.MyException;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
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.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static com.inspur.inserver.util.constant.SystemConstant.COMMON_CHARSET;public class HttpUtils {

    private HttpUtils(){}

    /**
     * get
     *
     *
     * @param headers
* @param querys
* @return
* @throws Exception
     */
public static HttpResponse doGet(String url,
                                     Map<String, String> headers,
                                     Map<String, String> querys)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpGet request = new HttpGet(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        return httpClient.execute(request);
    }

    /**
     * post form
     *
     *
     * @param headers
* @param querys
* @param bodys
* @return
* @throws Exception
     */
public static HttpResponse doPost(String url,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      Map<String, String> bodys)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpPost request = new HttpPost(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (bodys != null) {
            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();

            for (String key : bodys.keySet()) {
                nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
            }
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, COMMON_CHARSET.getValue());
            formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
            request.setEntity(formEntity);
        }
        return httpClient.execute(request);
    }

    /**
     * Post String
     *
     *
     * @param headers
* @param querys
* @param body
* @return
* @throws Exception
     */
public static HttpResponse doPost(String url,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      String body) throws IOException {
        HttpClient httpClient = sslClient();
        HttpPost request = new HttpPost(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, COMMON_CHARSET.getValue()));
        }
        return httpClient.execute(request);
    }

    /**
     * Post stream
     *
     *
     * @param headers
* @param querys
* @param body
* @return
* @throws Exception
     */
public static HttpResponse doPost(String url,
                                      Map<String, String> headers,
                                      Map<String, String> querys,
                                      byte[] body)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpPost request = new HttpPost(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }

    /**
     * Put String
     *
     *
     * @param headers
* @param querys
* @param body
* @return
* @throws Exception
     */
public static HttpResponse doPut(String url,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     String body)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpPut request = new HttpPut(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (StringUtils.isNotBlank(body)) {
            request.setEntity(new StringEntity(body, "utf-8"));
        }
        return httpClient.execute(request);
    }

    /**
     * Put stream
     *
     *
     * @param headers
* @param querys
* @param body
* @return
* @throws Exception
     */
public static HttpResponse doPut(String url,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     byte[] body)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpPut request = new HttpPut(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        if (body != null) {
            request.setEntity(new ByteArrayEntity(body));
        }
        return httpClient.execute(request);
    }

    /**
     * Delete
     *
     *
     * @param headers
* @param querys
* @return
* @throws Exception
     */
public static HttpResponse doDelete(String url,
                                        Map<String, String> headers,
                                        Map<String, String> querys)
            throws IOException {
        HttpClient httpClient = sslClient();
        HttpDelete request = new HttpDelete(buildUrl(url, querys));
        for (Map.Entry<String, String> e : headers.entrySet()) {
            request.addHeader(e.getKey(), e.getValue());
        }
        return httpClient.execute(request);
    }

    /**
     * 构建请求的 url
     *
     */
private static String buildUrl(String url, Map<String, String> querys) throws UnsupportedEncodingException {
        StringBuilder sbUrl = new StringBuilder();
        if (StringUtils.isBlank(url)) {
            throw new MyException("URL is null !");
        }
        sbUrl.append(url);
        if (null != querys) {
            StringBuilder sbQuery = new StringBuilder();
            for (Map.Entry<String, String> query : querys.entrySet()) {
                if (0 < sbQuery.length()) {
                    sbQuery.append("&");
                }
                if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
                    sbQuery.append(query.getValue());
                }
                if (!StringUtils.isBlank(query.getKey())) {
                    sbQuery.append(query.getKey());
                    if (!StringUtils.isBlank(query.getValue())) {
                        sbQuery.append("=");
                        sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
                    }
                }
            }
            if (0 < sbQuery.length()) {
                sbUrl.append("?").append(sbQuery);
            }
        }
        return sbUrl.toString();
    }

    /**
     * 在调用SSL之前需要重写验证方法,取消检测SSL
     * 创建ConnectionManager,添加Connection配置信息
*
     * @return HttpClient 支持https
     */
private static HttpClient sslClient() {
        return HttpsClientUtil.getHttpsClient();
    }

    /**
     * 将结果转换成JSONObject
     *
     * @param httpResponse
* @return
* @throws IOException
     */
public static JSONObject getJson(HttpResponse httpResponse) throws IOException {
        HttpEntity entity = httpResponse.getEntity();
        String resp = EntityUtils.toString(entity, "UTF-8");
        EntityUtils.consume(entity);
        return JSON.parseObject(resp);
    }
}
分享到:
评论

相关推荐

    http请求响应公共方法

    在Java开发中,实现HTTP请求接口的公共方法,我们可以利用Apache HttpClient库、OkHttp或者Java内置的HttpURLConnection类。这里以Java内置的HttpURLConnection为例,创建一个通用的HTTP请求方法: ```java import ...

    HttpClientHelper 工具类

    - `SingleHelper` 类通常包含一个静态成员变量来保存HttpClientHelper的实例,并提供一个公共的静态方法来获取这个实例。这样确保了在整个应用程序生命周期中,HttpClientHelper只有一个实例被创建和使用。 5. **...

    使用HttpClient调试android接口-通用方法

    HttpClient是一个常用的HTTP客户端库,它允许我们发送HTTP请求并接收响应。在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,...

    给予javaWeb-httpclient请求https实例demo

    以下是一个简单的使用HTTPClient发送HTTPS请求的示例代码: ```java import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; import org.apache....

    HttpClientUtil

    这个工具类通常会封装Apache HttpClient库的一些核心功能,使得开发者能够更方便、高效地发送网络请求并处理响应。Apache HttpClient是一个强大的客户端编程工具包,它允许开发者在Java应用程序中实现复杂的HTTP协议...

    httpclient4.3 封装工具类.zip

    - **发送请求**:提供一个公共方法,如`sendRequest(HttpRequestBase request, boolean followRedirects)`,用于执行请求并返回HttpResponse对象。 - **处理响应**:封装解析响应内容的方法,如`parseResponse...

    java通过飞信发送免费短信

    这些方法内部会使用HttpClient发送请求,处理请求和响应,对外提供简洁的接口。 在实际开发中,需要注意以下几点: - 飞信API的使用可能需要注册开发者账号并获取API密钥,确保请求的合法性。 - 短信发送可能会有...

    C#Post带参数请求+WebService接口.zip

    - 发送请求:调用`HttpClient`的`PostAsync`方法,传入请求的URL和HttpContent对象。 - 处理响应:`PostAsync`返回一个`Task&lt;HttpResponseMessage&gt;`,可以通过等待这个任务并访问其`Content`属性获取响应内容。 2...

    C++实现HTTP请求

    3. **发送请求**:使用send函数将构建好的请求头和请求体(对于POST请求)发送到服务器。 4. **接收响应**:服务器会返回一个HTTP响应,包括状态行、响应头和响应体。我们需要使用recv函数逐块接收这些数据,并处理...

    Postman REST Client是一款支持把各种模拟用户HTTP请求的数据发送到服务器的Chrome网页调试插件。

    这包括GET、POST、PUT、DELETE等多种HTTP方法,允许开发者发送任意复杂的请求头、查询参数、请求体数据,以测试和调试API。例如,你可以轻松地构造一个POST请求,附带JSON格式的数据,然后查看服务器返回的响应,这...

    MFC实现的简单的HTTP的POST和GET方法的类

    - `bool SendRequest(const CString& url, const CString& method, const CString& postData = _T(""))`:发送HTTP请求,参数包括URL、HTTP方法和POST数据(如果适用)。 - `int GetResponseCode()`:获取HTTP响应...

    发送短信服务类

    这可能涉及到网络请求,使用HTTP库(如Apache HttpClient或OkHttp)发起POST请求,携带必要的参数,如接收号码、短信内容、签名等。 4. **处理响应**:发送短信后,类需要解析API返回的结果,判断是否发送成功,并...

    网络编程 系统互相传数据 公共类 httpclien url

    在这个例子中,`HttpClientUtil`类提供了一个通用的接口来发送GET和POST请求。它使用了Apache HttpClient库创建HTTP连接,并处理了响应的读取和关闭。在实际项目中,这个类可以进一步扩展以满足特定需求,如支持其他...

    金蝶云K3Cloud接口

    - **调用接口**:使用HttpURLConnection或第三方库发送请求,处理响应数据,Java的JSON库如Jackson或Gson用于数据转换。 - **代码示例**:展示Java代码,演示如何进行入库操作,包括创建请求、设置参数和解析返回...

    Android HTTP网络请求获取JSON数据

    通常,这些方法会返回一个`Call`对象,通过调用`enqueue()`或`execute()`来发送异步或同步请求。对于异步请求,需要提供一个Callback,其中的`onResponse()`和`onFailure()`方法分别处理成功和失败的情况。 6. **...

    Angular6封装http请求的步骤详解

    在这个方法中,你可以克隆原始请求并添加基础URL、公共头部信息,比如token。通过调用next.handle(newReq)来将处理后的请求发送到下一个处理环节。同时,可以使用RxJS的操作符来实现错误重试和捕获逻辑。 在提供的...

    C#邮件发送程序的WebService实现

    对于简单的邮件发送服务,我们可能选择使用WebMethod标记的方法来暴露服务,然后通过HTTP POST请求调用。 创建邮件发送WebService的过程包括: 1. 创建一个新的ASP.NET WebService项目。 2. 在.asmx文件中定义一个...

    C# 常用公共类

    9. **System.Net.Http.HttpClient**: 用于发送HTTP请求和接收响应,常用于网络通信和API调用。 10. **System.Text.RegularExpressions.Regex**: 正则表达式类,提供了强大的文本模式匹配功能,用于验证和提取数据。...

    淘宝API .net 范例

    4. **发送请求**:通过HttpWebRequest或HttpClient类发送请求。 5. **接收响应**:解析返回的JSON或XML数据,并进行业务处理。 6. **异常处理**:处理可能的网络错误、API调用错误等。 在"dotnethelloworld"示例中...

    微信推送例子

    4. **发送POST请求**:使用HttpClient的PostAsync方法发送POST请求,传入请求URL和JSON内容。 5. **处理响应**:等待异步操作完成,获取HttpResponseMessage,读取响应内容,解析成JSON对象,检查推送状态。 在提供...

Global site tag (gtag.js) - Google Analytics