网络ip查询网站,怎么做微信小程序商城,郑州公司做网站汉狮,徐州免费网站制作作为Java开发程序员#xff0c;需要我们经常写一些工具类来简化开发过程#xff0c;我们自己肯定写过或者用过HttpUtils用来发送http请求#xff0c;但是每次手写太繁琐了#xff0c;于是就按照标准写了一个Http工具类#xff0c;现在分享出来。
1.HTTP请求简介
HTTP(Hy…作为Java开发程序员需要我们经常写一些工具类来简化开发过程我们自己肯定写过或者用过HttpUtils用来发送http请求但是每次手写太繁琐了于是就按照标准写了一个Http工具类现在分享出来。
1.HTTP请求简介
HTTP(Hypertest Transfer Protocol)是用于传输像HTML这样的超文本文件的应用层协议。它被设计用于WEB浏览器端和WEB服务端的交互但也有其它用途。HTTP遵循经典的client-server模型客户端发起请求尝试建立连接然后等待服务端的应答。HTTP是无状态协议这意味着服务端在两次请求间不会记录任何状态。
2.Http请求四要素
一个HTTP请求报文由四个部分组成请求行、请求头部、空行、请求数据。
1、请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成它们用空格分隔。
2、请求头部
HTTP客户程序例如浏览器向服务器发送请求的时候必须指明请求类型一般是GET或者POST)。如有必要客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的但Content-Length除外。对于POST请求来说Content-Length必须出现。
3、空行
它的作用是通过一个空行告诉服务器请求头部到此为止。
4、请求数据
若方法字段是GET则此项为空没有数据。若方法字段是POST,则通常来说此处放置的就是要提交的数据。
HttpUtils的代码
package com.zuoan.utils;import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
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.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class HttpUtil {private static final CloseableHttpClient httpclient HttpClients.createDefault();private static final String userAgent Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36;/*** 发送HttpGet请求*/public static String sendGet(String url, String token) {String result null;CloseableHttpResponse response null;try {URIBuilder uriBuilder new URIBuilder(url);HttpGet httpGet new HttpGet(url);httpGet.setHeader(User-Agent, userAgent);httpGet.setHeader(Authorization, token token);response httpclient.execute(httpGet);HttpEntity entity response.getEntity();if (entity ! null) {result EntityUtils.toString(entity);}} catch (Exception e) {log.error(处理失败 {} e);e.printStackTrace();} finally {if (response ! null) {try {response.close();} catch (IOException e) {log.error(e.getMessage());}}}return result;}/*** 发送HttpGet请求参数为map格式*/public static String sendGet(String url, MapString, String map) {String result null;CloseableHttpResponse response null;try {URIBuilder uriBuilder new URIBuilder(url);for (Map.EntryString, String entry : map.entrySet()) {uriBuilder.setParameter(entry.getKey(), entry.getValue());}HttpGet httpGet new HttpGet(uriBuilder.build());httpGet.setHeader(User-Agent, userAgent);response httpclient.execute(httpGet);HttpEntity entity response.getEntity();if (entity ! null) {result EntityUtils.toString(entity);}} catch (Exception e) {log.error(处理失败 {} e);e.printStackTrace();} finally {if (response ! null) {try {response.close();} catch (IOException e) {log.error(e.getMessage());}}}return result;}/*** 发送HttpPost请求参数为map*/public static String sendPost(String url, MapString, String map) {// 设置参数ListNameValuePair formparams new ArrayListNameValuePair();for (Map.EntryString, String entry : map.entrySet()) {formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}// 编码UrlEncodedFormEntity formEntity new UrlEncodedFormEntity(formparams, Consts.UTF_8);// 设置content-typeformEntity.setContentType(application/json);// 取得HttpPost对象HttpPost httpPost new HttpPost(url);// 防止被当成攻击添加的httpPost.setHeader(User-Agent, userAgent);// 接收参数设置httpPost.setHeader(Accept, application/json);// 参数放入EntityhttpPost.setEntity(formEntity);CloseableHttpResponse response null;String result null;try {// 执行post请求response httpclient.execute(httpPost);// 得到entityHttpEntity entity response.getEntity();// 得到字符串result EntityUtils.toString(entity);} catch (IOException e) {log.error(e.getMessage());} finally {if (response ! null) {try {response.close();} catch (IOException e) {log.error(e.getMessage());}}}return result;}/*** 发送HttpPost请求参数为json字符串*/public static String sendPost(String url, String jsonStr) {String result null;// 字符串编码StringEntity entity new StringEntity(jsonStr, Consts.UTF_8);// 设置content-typeentity.setContentType(application/json);HttpPost httpPost new HttpPost(url);// 防止被当成攻击添加的httpPost.setHeader(User-Agent, userAgent);// 接收参数设置httpPost.setHeader(Accept, application/json);httpPost.setEntity(entity);CloseableHttpResponse response null;try {response httpclient.execute(httpPost);HttpEntity httpEntity response.getEntity();result EntityUtils.toString(httpEntity);} catch (IOException e) {log.error(e.getMessage());} finally {// 关闭CloseableHttpResponseif (response ! null) {try {response.close();} catch (IOException e) {log.error(e.getMessage());}}}return result;}/*** 发送不带参数的HttpPost请求*/public static String sendPost(String url) {String result null;// 得到一个HttpPost对象HttpPost httpPost new HttpPost(url);// 防止被当成攻击添加的httpPost.setHeader(User-Agent, userAgent);CloseableHttpResponse response null;try {// 执行HttpPost请求并得到一个CloseableHttpResponseresponse httpclient.execute(httpPost);// 从CloseableHttpResponse中拿到HttpEntityHttpEntity entity response.getEntity();// 将HttpEntity转换为字符串result EntityUtils.toString(entity);} catch (IOException e) {log.error(e.getMessage());} finally {// 关闭CloseableHttpResponseif (response ! null) {try {response.close();} catch (IOException e) {log.error(e.getMessage());}}}return result;}
}若觉得文章对您有用不妨 关注 收藏 哦更多实用文章在首页