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);
}
}
相关推荐
在Java开发中,实现HTTP请求接口的公共方法,我们可以利用Apache HttpClient库、OkHttp或者Java内置的HttpURLConnection类。这里以Java内置的HttpURLConnection为例,创建一个通用的HTTP请求方法: ```java import ...
- `SingleHelper` 类通常包含一个静态成员变量来保存HttpClientHelper的实例,并提供一个公共的静态方法来获取这个实例。这样确保了在整个应用程序生命周期中,HttpClientHelper只有一个实例被创建和使用。 5. **...
HttpClient是一个常用的HTTP客户端库,它允许我们发送HTTP请求并接收响应。在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,...
以下是一个简单的使用HTTPClient发送HTTPS请求的示例代码: ```java import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; import org.apache....
这个工具类通常会封装Apache HttpClient库的一些核心功能,使得开发者能够更方便、高效地发送网络请求并处理响应。Apache HttpClient是一个强大的客户端编程工具包,它允许开发者在Java应用程序中实现复杂的HTTP协议...
- **发送请求**:提供一个公共方法,如`sendRequest(HttpRequestBase request, boolean followRedirects)`,用于执行请求并返回HttpResponse对象。 - **处理响应**:封装解析响应内容的方法,如`parseResponse...
这些方法内部会使用HttpClient发送请求,处理请求和响应,对外提供简洁的接口。 在实际开发中,需要注意以下几点: - 飞信API的使用可能需要注册开发者账号并获取API密钥,确保请求的合法性。 - 短信发送可能会有...
- 发送请求:调用`HttpClient`的`PostAsync`方法,传入请求的URL和HttpContent对象。 - 处理响应:`PostAsync`返回一个`Task<HttpResponseMessage>`,可以通过等待这个任务并访问其`Content`属性获取响应内容。 2...
3. **发送请求**:使用send函数将构建好的请求头和请求体(对于POST请求)发送到服务器。 4. **接收响应**:服务器会返回一个HTTP响应,包括状态行、响应头和响应体。我们需要使用recv函数逐块接收这些数据,并处理...
- `bool SendRequest(const CString& url, const CString& method, const CString& postData = _T(""))`:发送HTTP请求,参数包括URL、HTTP方法和POST数据(如果适用)。 - `int GetResponseCode()`:获取HTTP响应...
这包括GET、POST、PUT、DELETE等多种HTTP方法,允许开发者发送任意复杂的请求头、查询参数、请求体数据,以测试和调试API。例如,你可以轻松地构造一个POST请求,附带JSON格式的数据,然后查看服务器返回的响应,这...
这可能涉及到网络请求,使用HTTP库(如Apache HttpClient或OkHttp)发起POST请求,携带必要的参数,如接收号码、短信内容、签名等。 4. **处理响应**:发送短信后,类需要解析API返回的结果,判断是否发送成功,并...
在这个例子中,`HttpClientUtil`类提供了一个通用的接口来发送GET和POST请求。它使用了Apache HttpClient库创建HTTP连接,并处理了响应的读取和关闭。在实际项目中,这个类可以进一步扩展以满足特定需求,如支持其他...
- **调用接口**:使用HttpURLConnection或第三方库发送请求,处理响应数据,Java的JSON库如Jackson或Gson用于数据转换。 - **代码示例**:展示Java代码,演示如何进行入库操作,包括创建请求、设置参数和解析返回...
通常,这些方法会返回一个`Call`对象,通过调用`enqueue()`或`execute()`来发送异步或同步请求。对于异步请求,需要提供一个Callback,其中的`onResponse()`和`onFailure()`方法分别处理成功和失败的情况。 6. **...
在这个方法中,你可以克隆原始请求并添加基础URL、公共头部信息,比如token。通过调用next.handle(newReq)来将处理后的请求发送到下一个处理环节。同时,可以使用RxJS的操作符来实现错误重试和捕获逻辑。 在提供的...
对于简单的邮件发送服务,我们可能选择使用WebMethod标记的方法来暴露服务,然后通过HTTP POST请求调用。 创建邮件发送WebService的过程包括: 1. 创建一个新的ASP.NET WebService项目。 2. 在.asmx文件中定义一个...
9. **System.Net.Http.HttpClient**: 用于发送HTTP请求和接收响应,常用于网络通信和API调用。 10. **System.Text.RegularExpressions.Regex**: 正则表达式类,提供了强大的文本模式匹配功能,用于验证和提取数据。...
4. **发送请求**:通过HttpWebRequest或HttpClient类发送请求。 5. **接收响应**:解析返回的JSON或XML数据,并进行业务处理。 6. **异常处理**:处理可能的网络错误、API调用错误等。 在"dotnethelloworld"示例中...
4. **发送POST请求**:使用HttpClient的PostAsync方法发送POST请求,传入请求URL和JSON内容。 5. **处理响应**:等待异步操作完成,获取HttpResponseMessage,读取响应内容,解析成JSON对象,检查推送状态。 在提供...