精华内容
下载资源
问答
  • http请求get请求和post请求体以及响应体

    万次阅读 多人点赞 2016-11-20 16:02:20
    一、http请求 1.Http请求格式 Http请求即客户端发送给服务器的请求。该请求的内容格式如下所示: 请求首行 请求头信息 空行 请求正文,也称请求体 2.使用HttpWatch抓包工具 请求信息详细内容如下: GET /Example03/ ...

    一、http请求

    1.Http请求格式

    Http请求即客户端发送给服务器的请求。该请求的内容格式如下所示:

    请求首行

    请求头信息

    空行

    请求正文,也称请求体

    2.使用HttpWatch抓包工具

    请求信息详细内容如下:

    GET /Example03/ HTTP/1.1
    Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
    Accept-Language: en-US,zh-CN;q=0.5
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
    Accept-Encoding: gzip, deflate
    Host: localhost:8080
    Connection: Keep-Alive
    Cookie: JSESSIONID=9E0C4BDEAFD1EB2B1060D69C3B96F72D

    (1)首先分析其请求首行:GET  /Example03/ HTTP/1.1

    GET :指的是请求方式。

    /Example03 :指的是请求地址,即URL。

    HTTP/1.1 :指的是协议及版本号。

    (2)接着分析请求头信息,由以上请求头信息可知,请求头信息的格式如下所示:

    l请求头名称

    冒号

    请求头值

    现在我们来一一分析这些请求头,理解它们的作用:

    Accept :告诉服务器当前浏览器支持的MIME类型。

    Accept-Language :告诉服务器当前浏览器支持的语言环境,这里的值是en-US,zh-CN。enà表示英文,USà表示美国,zhà表示中文,CNà表示中国。

    User-Agent :表示当前浏览器的类型和OS的类型,其中MSIE 8.0表示是ie浏览器,版本是8.0等。

    Accept-Encoding :当前浏览器支持的数据压缩格式,有时候服务器给浏览器发送的东西很大,这时候服务器就要考虑当数据被压缩后,浏览器能不能给解压出来,那么这个请求头就是浏览器告诉服务器它能够解压的格式。

    Host :浏览器请求的主机名和端口号,在这里它请求的主机是localhost,虽然后面没有显示端口号,但是你要知道这个端口号是80,它是http协议默认的端口号。

    Connection :连接的方式,Keep-Alive表示的意思是连接一会。

    Cookie :这是一个与cookie相关的请求头。

    (3)请求信息中的空行,处于请求头和请求正文之间。

    (4)以上请求信息中没有请求正文,是因为该请求方式是GET请求,而GET方式的请求信息中是没有请求正文的,我们接下来要学习POST请求有请求正文。后面我们会详细介绍请求正文。

    二、http的get和post请求

    在HTTP请求消息中,请求方式有GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT八种。而在以后们最常用的有两种请求方式:POST请求、GET请求。这两种请求方式所对应的请求协议内容略有不同,在上面中,我们已经了解了GET请求方式的请求信息,下面是Post请求。

    1.POST请求

    我们在浏览器地址栏上直接输入网址访问资源,这种请求方式是GET请求,超链接请求也属于GET请求,下面我们要演示的是POST请求:

    (1) 创建一个web应用,名称为Example04,并在该应用中的WebRoot目录下新建一个form.html文件。

    <form action="/Example04/index.jsp" method="post">
    用户名:<input type="text" name="username"/></br>
    密码:<input type="password" name="password"/></br>
    <input type="submit" value="提交"/>
    </form>

    (2) 将Example04发布到Tomcat中,启动Tomcat服务器。在浏览器端地址栏上输入http://localhost:8080/Example04/form.html,并使用HttpWatch进行抓包。

    (3) 在用户名文本框中输入:zhangsan,密码文本框中输入:123。再点击【提交】按钮。

    (4)我们通过HttpWatch成功的抓取到form表单提交之后的请求信息。

    POST /Example04/index.jsp HTTP/1.1
    Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
    Referer: http://localhost:8080/Example04/form.html
    Accept-Language: en-US,zh-CN;q=0.5
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    Host: localhost:8080
    Content-Length: 30
    Connection: Keep-Alive
    Cache-Control: no-cache
     
    username=zhangsan&password=123

    (5)现在我们再抓取一段GET方式请求信息,在浏览器地址栏上输入:http://localhost:8080/Example04?username=zhangsan&password=123

    (6)get请求信息

    GET /Example04?username=zhangsan&password=123 HTTP/1.1
    Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
    Accept-Language: en-US,zh-CN;q=0.5
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
    Accept-Encoding: gzip, deflate
    Host: localhost:8080
    Connection: Keep-Alive
    Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F

    将post方式请求信息与get方式请求信息进行比较,有以下两点区别:

    1.请求首行区别:请求参数的位置不同

    以上两种请求方式都是带参数的请求,POST请求首行是:POST /Example04/index.jsp HTTP/1.1,GET请求首行为: GET /Example04?username=zhangsan&password=123 HTTP/1.1,其中GET请求首行中,”?”后面的是请求参数,多个请求参数之间用”&”连接。可以看出,POST请求的请求参数并不在请求首行中。

    2.GET请求没有请求体,POST请求有请求体

    GET请求没有请求体。从例1-2可以看出,POST请求有请求体,而且请求体的内容是从form.html页面提交过来的参数。这些参数的格式:参数名=参数值&参数名=参数值&…,get请求没有请求体,它的请求参数附加在请求首行的url后面。

    三、http的响应

    1.什么是HTTP响应

    当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。其中,每个部分都代表了不同的含义。下面我们会围绕HTTP响应消息的每个组成部分进行详细分析。

    2.HTTP响应消息分析

    下面我们通过HttpWatch抓包工具,抓取一段响应信息,然后对该信息进行分析。

    (1)创建web应用Example05,将该应用发布到Tomcat服务器,启动Tomcat服务器。在浏览器地址栏输入http://localhost:8080/Example05/index.jsp。使用HttpWatch进行抓包,抓取的响应消息

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=UTF-8
    Content-Length: 624
    Date: Mon, 03 Nov 2014 06:37:28 GMT
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="http://localhost:8080/Example05/">
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      <body>
        This is my JSP page. <br>
      </body>
    </html>

    由响应消息内容,分析可知:

    (1)响应首行:其内容是”HTTP/1.1  200  OK”

    HTTP/1.1 :表示协议版本

    200 :表示响应状态码,200表示响应成功。

    OK :表示响应成功,对响应状态码的解释。

    (2)响应头信息:类似于请求消息中的请求头,其格式和请求头信息格式一样,即响应头:响应头值。

    Server响应头 :该响应头是服务器告诉浏览器,当前响应的服务类型和版本。

    Content-Type响应头 :服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。

    Content-Length响应头 :服务器告诉浏览器,响应内容的长度,该响应内容的长度现在是624个字节。

    Date响应头 :表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。

    (3)空行:响应头和响应体由空行连接。

    (4)响应体:该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。

    展开全文
  • Get请求,参数为@RequestBody的http请求

    千次阅读 2020-06-08 12:42:07
    Get请求,参数为@RequestBody的http请求调用接口 调用接口 public static String HttpClientBuilderGet(String uri,String body) { final CloseableHttpClient httpClient = HttpClientBuilder.create().build();...

    Get请求,参数为@RequestBody的http请求

    调用接口

     public static String HttpClientBuilderGet(String uri,String body) {
    	    final CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    	    final HttpEntityEnclosingRequestBase httpGet = new HttpGetOfBody(uri);
    	    final InputStream inputStream = IOUtils.toInputStream(body, Charset.defaultCharset());
    	    httpGet.addHeader("Content-Type","application/json");
    	    httpGet.setEntity(new InputStreamEntity(inputStream));
    	    try {
    	        final CloseableHttpResponse response = httpClient.execute(httpGet);
    			return IOUtils.toString(response.getEntity().getContent(),Charset.defaultCharset());
    	    } catch (IOException e) {
    			return e.getMessage();
    	    }
    	}
    
    展开全文
  • 发送Get请求,但是请求参数要放在请求body内,所以经过多方查证后整理出来以下代码。 2.POM依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>...

    1.背景要求

    发送Get请求,但是请求参数要放在请求body内,所以经过多方查证后整理出来以下代码。

    2.POM依赖

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>4.5.2</version>
            </dependency>
    
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.6</version>
            </dependency>
    
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.5</version>
            </dependency>

    3.发送Get请求工具类

    package com.example.demo.util;
    
    import com.example.demo.entity.ReqParamEntity;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.entity.ContentType;
    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;
    
    public class HttpUtil {
    
        public static String sendJsonByGetReq(String url, String param, String encoding) throws Exception {
    
            String body = "";
    
            //创建httpclient对象
            CloseableHttpClient client = HttpClients.createDefault();
    
            HttpGetWithEntity httpGetWithEntity = new HttpGetWithEntity(url);
            HttpEntity httpEntity = new StringEntity(param, ContentType.APPLICATION_JSON);
            httpGetWithEntity.setEntity(httpEntity);
    
            //执行请求操作,并拿到结果(同步阻塞)
            CloseableHttpResponse response = client.execute(httpGetWithEntity);
            //获取结果实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                //按指定编码转换结果实体为String类型
                body = EntityUtils.toString(entity, encoding);
            }
            //释放链接
            response.close();
            return body;
        }
    
        public static void main(String[] args) {
            String url = "http://localhost:8080/receiveGetReq";
    
            Gson gson = new GsonBuilder().create();
    
            ReqParamEntity reqParamEntity = new ReqParamEntity();
    
            reqParamEntity.setUserName("请求参数在请求body中");
            reqParamEntity.setPassWord("发送Get请求");
    
            String reqParams = gson.toJson(reqParamEntity);
    
            try {
                String result1 = sendJsonByGetReq (url, reqParams, "utf-8");
                System.out.println (result1);
    
            } catch (Exception e) {
                e.printStackTrace ( );
            }
        }
    
    }
    

    4.工具类关联类

    package com.example.demo.util;
    
    import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
    
    import java.net.URI;
    
    public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
    
        private final static String METHOD_NAME = "GET";
    
        @Override
        public String getMethod() {
            return METHOD_NAME;
        }
    
        public HttpGetWithEntity() {
            super();
        }
    
        public HttpGetWithEntity(final URI uri) {
            super();
            setURI(uri);
        }
    
        HttpGetWithEntity(final String uri) {
            super();
            setURI(URI.create(uri));
        }
    
    }
    

    5.验证是否请求成功

    package com.example.demo.controller;
    
    import com.example.demo.entity.ReqParamEntity;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    public class DemoController {
    
        @GetMapping("/receiveGetReq")
        public String receiveGetReq(@RequestBody ReqParamEntity reqParamEntity){
    
            Gson gson = new GsonBuilder().create();
            System.out.println("reqParamEntity="+gson.toJson(reqParamEntity));
            return "请求成功";
        }
    
    }
    

    6.总结

    请求成功

    展开全文
  • http请求远程接口获得Json数据(1) --- 利用HttpURLConnection发送post/get请求 一、前言 远程接口请求,通过Http请求远程接口获得JSON数据,利用利用HttpURLConnection发送post/get请求 二、...

    http请求远程接口获得Json数据(1) --- 利用HttpURLConnection发送post/get请求


    一、前言

    远程接口请求,通过Http请求远程接口获得JSON数据,利用利用HttpURLConnection发送post/get请求

    二、HttpURLConnection发送post请求

    待续....

    三、HttpURLConnection发送get请求

    待续....

    展开全文
  • http请求远程接口获得Json数据(2) --- 利用HttpClient发送post/get请求 一、前言 远程接口请求,通过Http请求远程接口获得JSON数据,利用利用HttpClient发送post/get请求 二、...
  • 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。 Get请求,GET /562f25980001b1b106000338.jpg HTTP/1.1 Host img.mukewang.com...
  • 非web项目实现文件下载,使用apache的httpmime工具进行相关的http请求操作。 正题 需求:实现非web项目进行文件下载或者http请求。 添加相关pom依赖 &amp;amp;amp;amp;amp;amp;amp;lt;dependency&amp;amp...
  • GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者...
  • 在JavaScript和后台请求时都有方式可以处理这些特殊字符从而使得像#号这样的特殊字符在get请求时也不会出错;但是在postman和浏览器直接测试接口的时候往往会出现错误,这时候可以对url字符进行转义,比如下面这样的...
  • 调用接口 public static void main(String[] args) { final String uri = "http://localhost:8080/getOfBody"; final CloseableHttpClient httpClient = HttpClientBuilder.create().build(); ...
  • 火狐的Http请求插件的安装和使用

    万次阅读 多人点赞 2019-07-31 19:10:40
    火狐有一个http请求插件,安装之后就可以用它来测试各种http请求了(GET/POST/PUT/DELETE)。 安装步骤如下: 1、打开火狐的附加组件管理器 2、在左边菜单栏选择插件 3、在搜索栏搜索httpRequest 4、选择并...
  • http请求

    千次阅读 热门讨论 2020-07-01 19:26:17
    1、GET 获取信息页面 2、POST 上传,修改,添加,服务器 3、PUT 修改 4、Delete 删除 5、head 只返回头信息 6、trace 回显服务器收到的请求,主要用于测试或诊断 7、connect HTTP/1.1协议预留能够连接为管道方式的...
  • java调用HTTP接口(Get请求和Post请求

    万次阅读 多人点赞 2018-09-14 16:43:27
    前提: 一个Http接口:http://172.83.38.209:7001/NSRTRegistration/test/add.do?id=8888888&...java代码调用Http接口代码如下(代码中注释分为两部分:处理get请求和post请求): package com.inspur.OKHTTP...
  • HTTP请求头中,可以使用Content-type来指定不同格式的请求信息。 get方法:  在url中说明情请求的资源,比如https://www.baidu.com/com?from=self&name=xx 其中?后的数据就是请求的数据,并且连接用&...
  • 接口的请求一般是比较固定的:主要考虑什么样的请求方式,url,需不需要传递参数等问题,这是你在写请求代码之前应该考虑的东西。但是因为js语法的不一样以及个人习惯不一样,会因人而异的产生差别。 XMLHttpRequest...
  • GET请求后退/刷新无害,POST后退/刷新则会导致重新提交数据。 GET书签可被收藏、POST为书签不可收藏。 GET能被缓存、POST不能被缓存。 GET编码类型application/x-www-form-url、POST编码类型常见...
  • 今天本来想在网上找一个HttpCline调用第三方借口的方法,现在网上各种版本,自己在以前做过的项目里找到了一个工具类,感觉挺方便的,里面包括了get请求带参数,get不带参数,post带参数,post不带参数! import org....
  • get请求和post请求的详细区别

    万次阅读 多人点赞 2019-06-06 16:29:40
    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者...
  • *接收一个带参数的http请求 * 127.0.0.1:3000/http_get?name=小小沉沉&password=qwer * 一般会有两次请求 另一次为http://127.0.0.1:3000/favicon.ico 这个是浏览器自动发起的请求,需要特殊处理 * *///导入http模块...
  • HTTP请求行、请求头、请求体详解

    万次阅读 多人点赞 2017-03-30 19:08:55
    HTTP请求
  • HTTPGET请求和POST请求

    千次阅读 2021-06-04 22:58:12
    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 1、请求行 即求情的数据格式中的第一行,由三个内容组成:请求方式、...
  • httpclient 支持http1.1的六种请求方法,options,put,delete,trace,get,head,post,这里只列举常用的get,head和post请求   1. Get请求    /** * 简单的get请求 * GET 请求指定的页面信息,并返回...
  • 场景如下:A服务需发送http请求调用B服务的接口(该接口为Get方式,入参是一个json字符串在body中传递) 当我看到这个接口的时候,感觉好奇怪(MMP,干嘛不用POST请求。Getget,请求还放Body中,心里有些不爽)...
  • HTTP协议中,GET请求和POST请求的区别

    万次阅读 多人点赞 2018-08-03 16:24:42
    HTTP请求概述: HTTP协议称为超文本传输协议,它设计的目的是保证客户机与服务器之间的通信。HTTP的工作方式是客户端与服务器之间的请求——应答协议。在客户端和服务器之间进行请求和响应时,有两种基本的请求方式...
  • HTTP中的GET请求

    千次阅读 2019-04-25 10:37:48
    HTTP中的GET请求可以理解成我们经常所说的“增删改查”中的“查”。请求的常见形式,一般是在请求URL后面以?的形式加上要发给服务器的参数,多个参数之间用&隔开,比如: ...
  • java通过HTTP调用接口(Get请求和Post请求
  • 详解HTTP GET请求

    千次阅读 2016-07-14 15:38:50
    实例1:NodeMcu通过TCP实现HTTP GET请求(无请求主体)srv = net.createConnection(net.TCP, 0) srv:on("receive", function(sck, c) print(c) end) srv:connect(80,"fanyi.youdao.com") srv:on("connection", ...
  • 文章目录GET1)导入模块2)发送请求3)响应请求POSTHTTP请求头HTTP响应状态码会话保持 我们知道通常浏览器支持get与post两种常见的请求方式,那么在python当中如何具体实现呢? GET 首先是get,我们知道get指令比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,876,953
精华内容 1,150,781
关键字:

get请求