Http发送get、post、delete、put请求

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

package com.ruoyi.common.tool;import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Map;/*** @author wjw*/
public class HttpURLConnectionUtil {private static final Logger logger = LoggerFactory.getLogger(HttpURLConnectionUtil.class);/*** 向指定URL发送GET方法的请求** @param url*            发送请求的URL* @param param*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求** @param url*            发送请求的 URL* @param param*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param,String token) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");if(token!=null){conn.setRequestProperty("Authorization",token);}// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(in!=null){in.close();}}catch(IOException ex){ex.printStackTrace();}}return result;}/*** delete请求* @param data* @param url* @param token* @return* @throws IOException*/public static String sendDelete(String data, String url, String token) throws IOException {logger.info("请求参数:{}", data);logger.info("请求url:{}", url);CloseableHttpClient client = null;HttpDeleteWithBody httpDelete = null;String result = null;try {client = HttpClients.createDefault();httpDelete = new HttpDeleteWithBody(url);httpDelete.addHeader("Content-type", "application/json; charset=utf-8");httpDelete.setHeader("Accept", "application/json; charset=utf-8");httpDelete.setHeader("Authorization", token);httpDelete.setEntity(new StringEntity(data));CloseableHttpResponse response = client.execute(httpDelete);HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity);logger.info("请求结果:{}", result);if (200 == response.getStatusLine().getStatusCode()) {logger.info("DELETE方式请求远程调用成功.msg={}", result);}} catch (Exception e) {logger.error("DELETE方式请求远程调用失败,errorMsg={}", e.getMessage());} finally {client.close();}return result;}/*** put请求* @param urlPath* @param data* @param token* @return*/public static String sendPut(String data, String urlPath, String token) {logger.info("请求参数:{}", data);logger.info("请求url:{}", urlPath);String result = null;URL url = null;HttpURLConnection httpurlconnection = null;try {url = new URL(urlPath);httpurlconnection = (HttpURLConnection) url.openConnection();httpurlconnection.setDoInput(true);httpurlconnection.setDoOutput(true);// 设置通用的请求属性httpurlconnection.setRequestProperty("accept", "*/*");httpurlconnection.setRequestProperty("connection", "Keep-Alive");httpurlconnection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");httpurlconnection.setRequestProperty("Content-Type", "application/json; charset=utf-8");if (token != null) {httpurlconnection.setRequestProperty("Authorization", token);}httpurlconnection.setRequestMethod("PUT");httpurlconnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");if (StringUtils.isNotBlank(data)) {httpurlconnection.getOutputStream().write(data.getBytes("UTF-8"));}httpurlconnection.getOutputStream().flush();httpurlconnection.getOutputStream().close();int code = httpurlconnection.getResponseCode();if (code == 200) {DataInputStream in = new DataInputStream(httpurlconnection.getInputStream());int len = in.available();byte[] by = new byte[len];in.readFully(by);result = new String(by, Charset.forName("UTF-8"));logger.info("请求结果:{}", result);in.close();} else {logger.error("请求地址:" + urlPath + "返回状态异常,异常号为:" + code);}} catch (Exception e) {logger.error("访问url地址:" + urlPath + "发生异常", e);} finally {url = null;if (httpurlconnection != null) {httpurlconnection.disconnect();}}return result;}public static void main(String[] args) {//发送 GET 请求/*String s=HttpURLConnectionUtil.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456");System.out.println(s);*///发送 POST 请求  http://61.55.158.220:54778/handle-paas-api/login/v1String param="{\n" +"\"username\":\"nuode@nuodwl\",\n" +"\"password\":\"3e856379df63de7c19be0f6580f9726c4ad5905303f9779f9be984d5eae207ee\",\n" +"\"developUsername\":\"hljjcsundi\",\n" +"\"developPassword\":\"6493f5041ed91a81e0e629d0770e4bed6a5c90f58e50682ffaf17333280f37ff\"\n" +"}";String sr=HttpURLConnectionUtil.sendPost("http://61.55.158.220:54778/handle-paas-api/login/v1", param,null);System.out.println(sr);JSONObject result = (JSONObject) JSONObject.parse(sr);JSONObject data =(JSONObject) result.get("data");String token = data.get("token").toString();System.out.println(token);}
}

HttpDelete的方法中本身并没有setEntity方法,所以需要自定义一个HttpDeleteWithBody类

package com.ruoyi.common.tool;import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;import java.net.URI;/*** @author wjw*/
public class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {public static final String METHOD_NAME = "DELETE";@Overridepublic String getMethod(){return METHOD_NAME;}public HttpDeleteWithBody(final String uri){super();setURI(URI.create(uri));}public HttpDeleteWithBody(final URI uri){super();setURI(uri);}public HttpDeleteWithBody(){super();}}

需要引入的包如下:

        <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.1</version></dependency>

Http发送get、post、delete、put请求相关推荐

  1. java中delete请求,如何在JAVA中的HttpURLConnection中发送PUT,DELETE HTTP请求

    I have Restful WebServices, and i send POST and GET HTTP request, how to send PUT and DELTE request ...

  2. jsp中Ajax请求发送PUT、DELETE请求的方式_刘锋的博客

    jsp中Ajax请求发送PUT.DELETE请求的方式 方式一 首先配置pom.xml ,添加过滤器 <filter><filter-name>hiddenHttpMethod ...

  3. 如何在客户端发送ajax请求,ajax - 从服务器(nodejs)发送数据到客户端(ajax请求)

    如何使用nodejs将数据从服务器发送到客户端? 所以基本上我通过点击一个按钮来调用这个函数 javascriptfunction createStuff(tid) { $.ajax({ type: ...

  4. axios delete有请求体吗_关于axios请求——delete方法

    有的人只知道delete方法,传值的时候,将请求值放在url上,而像post方法那些,带有请求体,却不知道该如果传值. 首先,delete方法有三种写法 一:请求参数拼接在url上 axios.del ...

  5. SAP云平台开启Kyma功能时发送到后台的HTTP请求

    进入SAP云平台的subaccount,切换到Kyma environment面板下,点击Enable Kyma: 输入Kyma集群的名称和描述信息: 观察发送到后台的HTTP请求明细: {" ...

  6. 如何模拟POST/PUT/DELETE等请求进行在线HTTP接口测试?

    跨域模拟Post请求,ApiPOST是当前最适合的工具. ApiPOST 是一个可直接生成文档的API调试.管理工具. 它可以突破常规的浏览器跨域瓶颈进行请求(Request)发送,从而模拟用户请求A ...

  7. java 送参数_关于java:如何以编程方式发送带参数的HTTP请求?

    本问题已经有最佳答案,请猛点这里访问. 如果我使用浏览器向服务器发送信息(例如使用登录.密码页),我只需填写用户文本框和密码文本框,然后单击登录按钮. 我想发送此信息,但不必使用浏览器.我想" ...

  8. cURL(wget)—— 测试 RESTful 接口及模拟 GET/POST/PUT/DELETE/OPTIONS 请求

    cURL 是一个简单的 http 命令行工具.与最优秀的 Unix 工具一样,在设计之时,cURL 是个小型程序,功能十分专一,而且是故意为之,仅用于访问 http 服务器.(在 Linux 中,可以 ...

  9. Postman发送带cookie的http请求

    1.Postman是chrome上一个非常好用的http客户端插件,可惜由于chrome安全的限制,发不出带cookie的请求.如果想要发送带cookie的请求,需要开启Interceptor: 2. ...

  10. 关于nodejs发送带参数的post请求调用人人网api

    其实对js基本都没什么了解就要去用nodejs尝试实在有些勉强,做些简单的笔记以后看起来或许有些帮助. 用-express   -e  xxx(应用名)创建基于ejs模版的应用. 按提示cd xxx并 ...

最新文章

  1. Spark学习之路 (二十二)SparkStreaming的官方文档
  2. Android 学习笔记之Volley开源框架解析(一)
  3. 三菱gxworks3安装失败_三菱电梯nexway故障表
  4. java grpc protobuf_protobuf+grpc+examples
  5. 2018 前端面试题(不定期更新)
  6. DELETE大批量数据的性能优化
  7. 一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?
  8. php e error,E_ERROR定义与用法汇总
  9. Salmon构建索引的时间效率和计算效率明显高于STAR
  10. 字体乱码的时候,可以使用英文下的写法
  11. [转载] sklearn FutureWarning: numpy not_equal will not check..., The comparison did not return the sam
  12. 01. Django基础:Django介绍
  13. LinkedHashMap介绍
  14. springboot健康饮食管理系统
  15. GPIO 模拟SPI
  16. vue组件中引入public文件,build打包后找不到资源报错404
  17. FL Studio 21中文版支持主题随心换,FL Studio 21Mac版新增对苹果M2/1家族芯片原生支持。
  18. html+canvas+输入文字换行,canvas文字换行
  19. python权限_无法执行python脚本,权限被拒绝?
  20. 服务器玩cf显示文件损坏,“CF登陆游戏出现“文件缺损或破坏”的解决方案:”的解决方案...

热门文章

  1. 50 岁的 C 语言,掌控 Windows、Linux、macOS 等操作系统半边天
  2. 面试经验//Java新手如何制定优秀的职业规划?看大牛怎么说!
  3. iOS 文字动画,文字逐个显示
  4. 大数据时代从繁乱冗杂中精准提取核心文本信息 × Python Tkinter 生成词云图
  5. 不同浏览器对键盘事件的不同认知
  6. 【线性代数】二、向量组和方程组
  7. 【Java中实现微信公众号模板消息推送】
  8. Python实现人机交互剪刀石头布小游戏(七局四胜制)
  9. windows 7软件
  10. 扫描文档SDK ocr识别技术