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

实现HTTP请求的方法有哪些

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

实现HTTP请求的方法有哪些

本篇文章为大家展示了实现HTTP请求的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、HTTP的请求与响应

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。是客户端和服务器端之间数据传输的格式规范。

通常,由HTTP客户端发起一个请求,服务端一旦收到请求,向客户端返回一个相应(一个请求的发出,有且只有一个响应)。

(一)HTTP请求

请求报文格式如下:

请求行 - 请求头 - 实体内容

例如:

GET /webDemo/Hellow HTTP/1.1  //请求行Host: localhost:8080      //请求头Connection: keep-aliveAccept: text/htmlAccept-Encoding: gzip, deflate, sdch, brAccept-Language: zh-CN,zh;q=0.8                //空行                //实体内容

1、请求行

请求行的格式为

GET /webDemo/Hellow HTTP/1.1

请求方式 请求资源 http协议版本

(1)请求方式

请求方法有:

1) GET 请求指定的页面信息,并返回实体主体。
2) HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3) POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4) PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5) DELETE 请求服务器删除指定的页面。
6) CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7) OPTIONS 允许客户端查看服务器的性能。
8) TRACE 回显服务器收到的请求,主要用于测试或诊断。
常用的请求方式主要是GET和POST(通常用于表单的提交),浏览器直接访问的请求,默认提交方式为GET。

GET方法

提交的表单数据会在请求行的URI的后面。(以问号开头,跟随者键值对,以&连接)提交的数据大小有限制,不能超过1KB。不适合提交敏感数据。

POST方法

表单提交的数据会包含在实体内容当中。

(2)请求资源

该请求资源为Request-URI是一个统一资源标识符(Uniform Resource Identifier)是一个用于标识某一互联网资源名称的字符串。(本地,局域,互联网)

(3)HTTP协议版本

http 1.0:当浏览器客户端与服务器端建立连接后,发送一次请求后,就关闭连接
http 1.1:当浏览器客户端与服务器端建立连接后,可以在一次连接后,发送多次请求

请求头

常见的请求行:
Accept:text/html,image@WebServlet("/Hellow")public class GetRequestInfo extends HttpServlet {  @Override  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    //创建一个字符串来存储请求信息    StringBuffer req = new StringBuffer();    //获取请求行    //获取请求方法,URI,HTTP版本     req.append(request.getMethod()+" "+request.getRequestURI()+" "+request.getProtocol()+"\n");    //获取请求头    //获取所有请求头    Enumeration<?> headerName = request.getHeaderNames();    while(headerName.hasMoreElements()){      String header= (String)headerName.nextElement();      req.append(header+": ");      //获取指定请求头的值      Enumeration<?> headerValue = request.getHeaders(header);      while(headerValue.hasMoreElements()){        req.append((String)headerValue.nextElement()+";");      }      req.append("\n");    }    req.append("\n");    //获取实体内容    InputStream input = request.getInputStream();    byte[] buffer = new byte[1024];    int len = 0;    while((len=input.read(buffer))!=-1){      String str = new String(buffer,0,len);      req.append(str);    }    //输出请求信息    System.out.println(req);  }}

(二)HttpServletResponse

通过例子,来看通过修改响应信息来实现一些业务逻辑。

package sun;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/Response")public class ModifyResponseInfo extends HttpServlet {    @Override  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {    //1、修改响应行    resp.setStatus(404);    //resp.sendError(404);    //2、修改响应头    resp.setHeader("Server","JBoss");    //3、修改实体内容    //发送字符类型的实体内容    resp.getWriter().write("response");    //发送字节类型的实体内容    resp.getOutputStream().write("response".getBytes());    //4、通过修改响应头,来请求重定向    //发送要给302状态码,location的响应头        resp.setStatus(302);    resp.setHeader("location","/webDemo/index.html");    //也可以直接调用sendRedirect方法直接重定向    //resp.sendRedirect("/webDemo/adv.html");    //5、通过修改响应头,来实现定时刷新页面    //一秒后刷新页面    resp.setHeader("refresh","1");    //也可以定时重定向页面    //resp.setHeader("refresh","1;url=/webDemo/index.html");    //6、通过修改响应头,来修改服务端和客户端的传输的数据类型    //resp.setHeader("content-type","text/html")    //也可以直接调用setContentType方法直接设置    //在web.xml文件中找到对应的数据类型写法    resp.setContentType("text/html");  }}

(三)获取请求参数

由于GET和POST提交参数的位置不同(POST方法: 表单提交的数据会包含在实体内容当中;GET方法: 提交的表单数据会在请求行的URI的后面。),因此GET和POST方法获取请求参数的方法也不样。

//获取GET方式参数:request.getQueryString();//获取POST方式参数:request.getInputStream();

但是这样获得的参数,需要进行字符串的拆分以后才能使用。因此,Tomcat自动将GET和POST的请求参数封装在HttpServletRequest对象当中。可以调用以下方法获得:

  //根据指定名字来获取参数值    request.getParameter("name");    request.getParameter("password");    //获取所有参数名字    Enumeration<String> params = request.getParameterNames();    while(params.hasMoreElements()){      String param = params.nextElement();      String value = request.getParameter(param);    }

(四)编码问题

服务端和客户端可能存在着编码问题,当服务端和客户端的编码不同时,传输的数据就有可能因为编码问题而导致乱码。

手动解码

在获取的每个数据进行手工再次编码,这里是必须知道服务端的编码方式和客户端的编码方法。

name = new String(name.getBytes("iso-8859-1"),"utf-8");

设置参数查询码表

在获取数据之前,调用setCharacherEncoding方法设置指定编码格式。

该方法,只能对请求实体内容的编码起作用,所以只能对POST提交参数起作用。

request.setCharacherEncoding(“utf-8”);

修改服务器的配置文件

比如,tomcat服务器当中,修改server.xml配置文件

<!-- A "Connector" represents an endpoint by which requests are received     and responses are returned. Documentation at :     Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)     Java AJP Connector: /docs/config/ajp.html     APR (HTTP/AJP) Connector: /docs/apr.html     Define a non-SSL/TLS HTTP/1.1 Connector on port 8080  -->  <!--在这里,加上属性URIEncoding,及指定编码值-->  <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>

上述内容就是实现HTTP请求的方法有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

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

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

实现HTTP请求的方法有哪些

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

下载Word文档

猜你喜欢

实现HTTP请求的方法有哪些

本篇文章为大家展示了实现HTTP请求的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、HTTP的请求与响应HTTP协议(HyperText Transfer Protocol,超文本传输
2023-05-31

图片的HTTP请求方法有哪些

这篇文章主要介绍“图片的HTTP请求方法有哪些”,在日常操作中,相信很多人在图片的HTTP请求方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”图片的HTTP请求方法有哪些”的疑惑有所帮助!接下来,请跟
2023-06-08

Node发起HTTP请求的方法有哪些

本篇内容主要讲解“Node发起HTTP请求的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node发起HTTP请求的方法有哪些”吧!正文Node.js HTTPS ModuleNode
2023-07-04

利用java实现发送http或get请求的方法有哪些

这篇文章将为大家详细讲解有关利用java实现发送http或get请求的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、第一种方式,通过HttpClient方式,代码如下:publ
2023-05-31

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

这篇文章主要介绍“JAVA发送HTTP请求的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JAVA发送HTTP请求的方式有哪些”文章能帮助大家解决问题。1. HttpURLConnecti
2023-07-05

获取客户端HTTP请求头的方法有哪些

本篇文章为大家展示了获取客户端HTTP请求头的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。获取客户端发来的HTTP请求头中的内容可以使用如下方法:getDateHeader()getHe
2023-05-31

jquery实现Ajax请求的方式有哪些

jQuery实现Ajax请求的方式有以下几种:1. $.ajax():最常用的方式,可以进行各种自定义配置,例如请求的URL、请求的类型、数据类型、超时等。2. $.get():发送GET请求。3. $.post():发送POST请求。4.
2023-08-15

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

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

JS实现网络请求的方式有哪些

这篇文章将为大家详细讲解有关JS实现网络请求的方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景为了应对越来越多的测试需求,减少重复性的工作,有道智能硬件测试组基于 electron 开发了一系
2023-06-29

php中的常用HTTP请求头有哪些

本篇内容主要讲解“php中的常用HTTP请求头有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中的常用HTTP请求头有哪些”吧!在PHP中,HTTP请求头是指在发送HTTP请求时,添加
2023-07-05

Golang表单请求的方法有哪些

在Golang中,我们可以使用以下方法来处理表单请求:1. POST方法:在请求体中发送表单数据。可以使用`http.Post`或`http.PostForm`方法来发送POST请求,并将表单数据作为参数传递。这些方法会自动设置Conten
2023-08-19

java跨域请求的方法有哪些

Java中实现跨域请求有以下几种方法:1. JSONP(JSON with Padding):JSONP是一种使用动态脚本标签(如)获取跨域数据的方法。通过在请求中指定一个回调函数名,服务器将数据包装为函数调用并返回,前端页
2023-09-06

vue跨域请求的方法有哪些

Vue跨域请求的方法有以下几种:1. 通过配置代理服务器:将API请求发送到代理服务器,再由代理服务器转发到API服务器。可以使用webpack的devServer配置或者使用http-proxy-middleware中间件实现。2. 使用
2023-08-09

php获取请求的方法有哪些

这篇“php获取请求的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php获取请求的方法有哪些”文章吧。一、GET
2023-07-05

php发送get请求的方法有哪些

PHP发送GET请求的方法有以下几种:1. 使用file_get_contents函数:可以通过该函数向指定的URL发送GET请求,并返回请求的结果。例如:```php$response = file_get_contents('http:
2023-08-11

ajax的请求方式有哪些

Ajax的请求方式有以下几种:1. GET:使用GET方法发送请求,获取指定资源。这是最常用的请求方式之一。例如:`$.get(url, data, success, dataType)`2. POST:使用POST方法发送请求,向指定资源
2023-09-13

编程热搜

  • 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动态编译

目录