Java httpcomponents发送get post请求代码实例

网友投稿 552 2022-11-21


Java httpcomponents发送get post请求代码实例

引入的包为:

org.apache.httpcomponents

httpclient

4.5.8

实现的工具类为:

import com.alibaba.fastjson.JSON;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class HttpClientHelper {

private static Logghttp://er logger = LoggerFactory.getLogger(HttpClientHelper.class);

private HttpClientHelper() {

}

/**

* 发起POST请求

*

* @param url url

* @param paramMap 参数的Map格式

*/

public static void sendPost(String url, Map paramMap) {

logger.info("开始发起POST请求,请求地址为{},参数为{}", url, JSON.toJSON(paramMap));

CloseableHttpResponse response = null;

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

String encoding = "utf-8";

//创建post请求对象

HttpPost httpPost = new HttpPost(url);

//装填请求参数

List list = new ArrayList<>();

for (Map.Entry entry : paramMap.entrySet()) {

list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));

}

//设置参数到请求对象中

httpPost.setEntity(new UrlEncodedFormEntity(list, encoding));

httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");

httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

response = httpClient.execute(httpPost);

} catch (IOException e) {

logger.error("POST请求发出失败,请求的地址为{},参数为{},错误信息为{}", url, JSON.toJSON(paramMap), e.getMessage(), e);

} finally {

try {

if (response != null) {

response.close();

}

} catch (IOException e) {

logger.error("POST请求response关闭异常,错误信息为{}", e.getMessage(), e);

}

}

}

/**

* 发起GET请求

*

* @param urlParam url请求,包含参数

*/

public static void sendGet(String urlParam) {

logger.info("开始发起GET请求,请求地址为{}", urlParam);

HttpGet httpGet = new HttpGet(urlParam);

CloseableHttpResponse response = null;

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

response = httpClient.execute(httpGet);

int status = response.getStatusLine().getStatusCode();

logger.error("GET请求发出成功,请求的地址为{},返回状态为{}", urlParam, status);

} catch (IOException e) {

logger.error("GET请求发出失败,请求的地址为{},错误信息为{}", urlParam, e.getMessage(), e);

} finally {

try {

if (response != null) {

response.close();

}

} http://catch (IOException e) {

logger.error("GET请求response关闭异常,错误信息为{}", e.getMessage(), e);

}

}

}

public static void main(String[] args) {

String url = "https://jiashubing.cn/tencenttest";

//需要传入的参数

Map map = new HashMap<>();

map.put("code", "js");

map.put("day", "0");

map.put("city", "北京");

map.put("dfc", "1");

map.put("charset", "utf-8");

sendPost(url, map);

String urlParam = "https://jiashubing.cn/talk/document?fileid=1234ji贾树丙";

sendGet(urlParam);

}

}

如果POST请求想要发送Json 格式的数据,只需要修改成这样:

String json = JSON.toJSONString(paramMap);

StringEntity requestEntity = new StringEntity(json, "utf-8");

httpPost.setEntity(requestEntity);


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java去除中文括号小括号,或者英文括号的实例代码
下一篇:Java commons
相关文章

 发表评论

暂时没有评论,来抢沙发吧~