我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Java中发起一个http请求

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Java中发起一个http请求

这期内容当中小编将会给大家带来有关怎么在Java中发起一个http请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、GET与POST

GET和POST是HTTP的两个常用方法。
GET指从指定的服务器中获取数据
POST指提交数据给指定的服务器处理

1.GET方法

使用GET方法,需要传递的参数被附加在URL地址后面一起发送到服务器。
例如:http://121.41.111.94/submit?name=zxy&age=21
特点:

  • GET请求能够被缓存

  • GET请求会保存在浏览器的浏览记录中

  • 以GET请求的URL能够保存为浏览器书签

  • GET请求有长度限制

  • GET请求主要用以获取数据

2.POST方法

使用POST方法,需要传递的参数在POST信息中单独存在,和HTTP请求一起发送到服务器。
例如:
POST /submit HTTP/1.1
Host 121.41.111.94
name=zxy&age=21

特点:

  • POST请求不能被缓存下来

  • POST请求不会保存在浏览器浏览记录中

  • 以POST请求的URL无法保存为浏览器书签

  • POST请求没有长度限制

实现代码

下面将Java发送GET/POST请求封装成HttpRequest类,可以直接使用。HttpRequest类代码如下:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;public class HttpRequest {  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", "* public static String sendPost(String url, String param) {  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)");   // 发送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; }}

实例演示

在搭建flask框架文章中,我们已经写好了一个功能模块show(). 该功能模块如下:

#app的路由地址"/show"即为ajax中定义的url地址,采用POST、GET方法均可提交@app.route("/show",methods=["GET", "POST"])def show(): #首先获取前端传入的name数据 if request.method == "POST":  name = request.form.get("name") if request.method == "GET":  name = request.args.get("name") #创建Database类的对象sql,test为需要访问的数据库名字 具体可见Database类的构造函数 sql = Database("test") try:  #执行sql语句 多说一句,f+字符串的形式,可以在字符串里面以{}的形式加入变量名 结果保存在result数组中  result = sql.execute(f"SELECT type FROM type WHERE name='{name}'") except Exception as e:  return {'status':"error", 'message': "code error"} else:  if not len(result) == 0:   #这个result,我觉得也可以把它当成数据表,查询的结果至多一个,result[0][0]返回数组中的第一行第一列   return {'status':'success','message':result[0][0]}  else:   return "rbq"

下面 我们利用POST方法发起请求,Java代码如下:

  //创建发起http请求对象  HttpRequest h = new HttpRequest();  //向121.41.111.94/show发起POST请求,并传入name参数  String content = h.sendPost("http://121.41.111.94/show","name=张新宇");  System.out.println(content);

我们打印出content值,发现就是python中show()返回的json(在Java中,content被识别为String类型,而不是json)

怎么在Java中发起一个http请求

(在转换过程中,不知道出什么问题了,中文显示了unicode编码。但在后面的转json格式后就没有这样的问题了)

字符串转json

Java成功发起Http请求后,由于返回值是String类型,而不是原本python函数中的json格式。所以我们需要将字符串类型转为json格式,并通过键值对的形式得出message对应的值
首先在maven中引入jar包:

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version></dependency>

转换代码如下:

import com.alibaba.fastjson.JSONObject;JSONObject jsonObject = JSONObject.parseObject(content);System.out.println(jsonObject);System.out.println(jsonObject.getString("message"));

运行结果:

怎么在Java中发起一个http请求

上述就是小编为大家分享的怎么在Java中发起一个http请求了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Java中发起一个http请求

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Java中发起一个http请求

这期内容当中小编将会给大家带来有关怎么在Java中发起一个http请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服务器中获
2023-06-14

在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能

这期内容当中小编将会给大家带来有关在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、前言如何通过Java发送HT
2023-05-31

在JAVA中发送HTTP请求的方式有哪些

在JAVA中发送HTTP请求的方式有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式
2023-06-06

JAVA中的HTTP请求怎么利用HttpClient实现发送

JAVA中的HTTP请求怎么利用HttpClient实现发送?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HttpClient介绍HttpClient 不是一个
2023-05-31

Java使用HttpUtils怎么实现发送HTTP请求

本篇文章和大家了解一下Java使用HttpUtils怎么实现发送HTTP请求。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录第一部分:简单总结HTTP请求常用配置第二部分:使用JavaLib的HttpUtils第三部分
2023-07-06

http请求怎么在spring boot中使用

今天就跟大家聊聊有关http请求怎么在spring boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是经过封装:一:初始化httpclientprivate stat
2023-05-30

jMeter中怎么发送两个逻辑相关的HTTP请求

这期内容当中小编将会给大家带来有关jMeter中怎么发送两个逻辑相关的HTTP请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在我有另一个需求场景:假设我开发了一个创建Service Request的
2023-06-03

使用Flutter怎么实现一个Http网络请求

这期内容当中小编将会给大家带来有关使用Flutter怎么实现一个Http网络请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. Http的请求方式简介Http网络请求方式就是描述了客户端想对指定的资源
2023-06-14

Delphi通过IdHTTP怎么发送Http请求到Java 后台

这篇文章将为大家详细讲解有关Delphi通过IdHTTP怎么发送Http请求到Java 后台,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。##########################
2023-06-04

JS前端并发多个相同的请求怎么控制为只发一个请求

这篇文章主要讲解了“JS前端并发多个相同的请求怎么控制为只发一个请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS前端并发多个相同的请求怎么控制为只发一个请求”吧!描述如下同时发多个相同
2023-07-02

怎么设置Fiddler来拦截Java代码发送的HTTP请求

这篇文章主要介绍“怎么设置Fiddler来拦截Java代码发送的HTTP请求”,在日常操作中,相信很多人在怎么设置Fiddler来拦截Java代码发送的HTTP请求问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-04

怎么在JavaScript中使用Promise控制并发请求个数

这篇文章给大家介绍怎么在JavaScript中使用Promise控制并发请求个数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。串行:一个异步请求完了之后在进行下一个请求并行:多个异步请求同时进行串行举例:var p =
2023-06-15

在Java项目中如果发送http请求实现文件上传功能

在Java项目中如果发送http请求实现文件上传功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体代码如下所示:package wxapi.WxHelper; import
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录