当前位置: 首页 > 编程日记 > 正文

java http head 请求_http请求头header、请求体body、请求行介绍

HttpServletRequest对象代表客户端的请求,当客户端通过http协议请求访问

服务器的时候,http请求头的所有信息都封装在这个对象中,通过这个对象,可以获取客户端请求的所有信息。http请求包含请求行/状态行、请求头、请求体。

request如果是post才有请求体,get则没有请求体,直接跟在?后面,用&隔开。

getHeader(String name)获取单个请求头name对应的value

getHeaders(String name)获取多个请求头对应的一组value,因此返回的是枚举类型的数据

getHeaderNames()获取请求头的所有name值,返回的数据也是一个枚举类型数据,将枚举中的元素遍历出来,根据name取到value,即是请求头的所有信息。

请求头header一般用来存放一些cookie,token信息;

请求体body一般用来存储post的参数和参数数据;

我们用postman测试下

Params

school:XiaMen

Header

userName:chen

body

{"class":"test"}

d66b9fcd1d340de0cec6f92f3fd51948.png

3d08100c386d090f035afec1589c1b5a.png

package com.example.demo;

import java.io.BufferedReader;

import java.text.MessageFormat;

import java.util.Enumeration;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class IndexController {

@RequestMapping("/hello")

public String hello(HttpServletRequest request,HttpServletResponse response){

/**

* HttpServletRequest对象代表客户端的请求,当客户端通过http协议请求访问

* 服务器的时候,http请求头的所有信息都封装在这个对象中,通过这个对象,可以获取

* 客户端请求的所有信息.

* http请求包含请求行/状态行、请求头、请求体

*/

//客户端请求uri

String uri = request.getRequestURI();

//客户端请求行中的参数部分

String queryString = request.getQueryString();

//返回url的额外路径信息

String pathInfo = request.getPathInfo();

//客户端ip

String ip = request.getRemoteAddr();

//客户端完整主机名

String host = request.getRemoteHost();

//客户端端口

int port = request.getRemotePort();

//获取web服务器的主机和端口,主机名

String webHost = request.getLocalAddr();

int webPort = request.getLocalPort();

String webName = request.getLocalName();

//获取请求头信息

Enumerationheaders = request.getHeaderNames();

System.out.println("请求头信息");

while(headers.hasMoreElements()){

String headName = (String)headers.nextElement();

String headValue = request.getHeader(headName);

System.out.println(headName+":"+headValue);

}

System.out.println("请求参数");

//request如果是post才有请求体,get则没有请求体,直接跟在?后面,用&隔开

/**

* getHeader(String name)获取单个请求头name对应的value

* getHeaders(String name)获取多个请求头对应的一组value,因此返回的是枚举类型的数据

* getHeaderNames()获取请求头的所有name值,返回的数据也是一个枚举类型数据,将枚举中的元素遍历出来,根据name取到value,即是请求头的所有信息

*/

//获取客户端请求参数

//request对象封装的参数是以Map的形式存储的

MapparamMap = request.getParameterMap();

for(Map.Entryentry :paramMap.entrySet()){

String paramName = entry.getKey();

String paramValue = "";

String[] paramValueArr = entry.getValue();

for (int i = 0; paramValueArr!=null && i < paramValueArr.length; i++) {

if (i == paramValueArr.length-1) {

paramValue+=paramValueArr[i];

}else {

paramValue+=paramValueArr[i]+",";

}

}

System.out.println(MessageFormat.format("{0}={1}", paramName,paramValue));

}

//请求体

try {

System.out.println("请求体");

charReader(request);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "hello world";

}

void charReader(HttpServletRequest request) throws Exception{

BufferedReader br = request.getReader();

String str, wholeStr = "";

while((str = br.readLine()) != null){

wholeStr += str;

}

System.out.println(wholeStr);

}

}

输出结果

==============================================

请求头信息

username:chen

cache-control:no-cache

postman-token:58cf0ebc-5448-4460-95db-8610bec65927

content-type:text/plain

user-agent:PostmanRuntime/7.4.0

accept:*/*

host:localhost:8080

accept-encoding:gzip, deflate

content-length:16

connection:keep-alive

请求参数

school=XiaMen

请求体

{"class":"test"}

往请求头header里设置参数和参数value,可以使用HttpClient访问rest接口,往请求头里添加token验证信息

CloseableHttpClient client = HttpClients.createDefault();

HttpGet get = new HttpGet("http://localhost:8080/index");

try {

get.setHeader("token", "jdlj939399lKDN");

CloseableHttpResponse response2 = client.execute(get);

HttpEntity entity = response2.getEntity();

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

相关文章:

全球UML模型共享设计下载中心--www.euml.org上线

全球UML模型共享设计&下载中心euml.org上线euml.org是楚凡科技版权所有的公益站点&#xff0c;为全球UML用户和爱好者提供如下服务&#xff1a;1、在线UML建模工具Trufun eUML。Trufun eUML以Applet形式运行在客户的浏览器中&#xff0c;从而提供在线建模功能。2、模型共享…

你是否对它有一种责任感

它&#xff0c;指开发人员对开发出的产品&#xff1b;它是测试人员所面对的测试产品。你是否对它有一种责任感&#xff0c;是指开发人员是否对它开发出来的产品有责任感&#xff0c;为它骄傲&#xff0c;为它而开心&#xff1b;你是否对它有一种责任感&#xff0c;是指测试人员…

【机器学习】基于粒子群算法的非线性函数寻优

本微信图文介绍了基于粒子群算法的非线性函数寻优过程&#xff0c;并利用Matlab实现。

java递归排雷_C语言实现扫雷小游戏

源代码链接&#xff1a;https://github.com/Sasura321/Minesweeper扫雷游戏也算是一个简单的小项目&#xff0c;这儿是之前写的代码&#xff0c;来写成博文回顾一下。首先,代码要实现几个功能&#xff1a;第一下扫雷时&#xff0c;即使踩中了雷也不能直接炸死;扫雷时&#xff0…

任意角度旋转图片

/// <summary> /// 任意角度旋转 /// </summary> /// <param name"bmp">原始图Bitmap</param> /// <param name"angle">旋转角度</param> /// <param name"bkColor"…

如何切分用户故事

在把用户故事切分成小块&#xff0c;从而更好地利用敏捷技术时&#xff0c;很多新组建的敏捷团队都会遇到困难。 敏捷社区的成员在多篇文章中为如何有效地切分用户故事提供了指导。  当把庞大的用户故事切分成小块时&#xff0c;是否有一些一般的准则供我们遵循呢? Rachel D…

【机器学习】基于人工鱼群算法的非线性函数寻优

本微信图文介绍了人工鱼群算法的基本原理并对一元非线性函数进行极值寻优。

java9可执行jar_单个java文件打成可执行jar包

1 概述使用JDK自带的jar与java将单个java文件打成可执行jar包并运行。 当然也可以使用IDE完成&#xff0c;使用Maven只需要一个简单的package&#xff0c;但是单个文件嘛&#xff0c;没必要这么“凶狠”。2 新建测试文件著名的Hello World&#xff1a;public class Main{public…

简评游戏人工智能相关的中文书(下)

赖勇浩&#xff08;http://laiyonghao.com&#xff09; 游戏开发中的人工智能 2006 年 9 月第一版 AI for Game Develpoers 应该算得上一本质量在中等偏上的书&#xff0c;可惜的是即使中文版是由 O’Reilly Taiwan 公司编译&#xff0c;中文版的质量依然差强人意。小的翻译错误…

化敌为友 运营商组团拥抱OTT为哪般

2月15日&#xff0c;全球9大电信运营商宣布&#xff0c;成立“合作运营联盟”&#xff08;Partnering Operator Alliance&#xff09;&#xff0c;协力挖掘互联网企业为电信业带来的增长潜力。从几年前的抵御OTT进攻到如今的“合作运营”&#xff0c;这个180度的态度转变后面有…

【机器学习】基于自适应变异粒子群算法的非线性函数寻优

本微信图文详细介绍了自适应变异粒子群算法的基本原理以及在非线性函数寻优中的应用。 —————————–华丽分割线—————————— 我们免费提供本文介绍方法的源码&#xff0c;你可以私信我们领取&#xff0c;如果你在领取源码后觉得有帮助&#xff0c;希望能够转…

php fastcgi配置_IIS7.5配置php(FastCGI)- 自动配置

操作系统是 Windows 2008 R2(Windows7)&#xff0c;IIS版本是7.5&#xff0c;php版本是 php-5.3.2-Win32-VC9-x86(安装包)&#xff0c;数据库是 mysql-5.5.12-win32。具体配置步骤如下&#xff1a;1、安装IIS7.51)Windows 2008(R2)安装步骤&#xff1a;桌面左下角“服务器管理器…

silverlight之How To:设置ComboBox控件的数据源当ComboBox用来作为DataGrid的某列的编辑控件时...

DataGrid是个可编辑的列表控件&#xff0c;而且可以用已有的输入控件来作为某一列的编辑控件&#xff0c;比如用ComboBox控件来作为某列的编辑控件供用户选择数据&#xff0c;这个时候就要先设置好ComboBox控件的下拉列表项了&#xff0c;在silverlight里怎么做呢&#xff1f; …

【Matlab与线性代数】Matlab中对数组元素引用方法总结

本微信图文主要介绍了Matlab中三种对数组元素的引用方法–下标法、索引法和布尔法。

预计2020年传感器需求超一万亿个

据勒克斯研究报告&#xff0c;移动设备的激增&#xff0c;可穿戴设备的日益流行以及连接式物联网的出现促使对传感器的预期需求向一万亿推进。然而&#xff0c;为了充分发挥这些或其他产品的潜能&#xff0c;仍需对传感器进行创新&#xff0c;以满足功率消耗、敏感度、外形因素…

php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出

怎么在php中将文本文件转换为csv文件并输出发布时间&#xff1a;2021-02-19 17:30:27来源&#xff1a;亿速云阅读&#xff1a;88作者&#xff1a;Leah本篇文章给大家分享的是有关怎么在php中将文本文件转换为csv文件并输出&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大…

一些技术图书编写、推荐、出版人员需要自重

最近在互联网上出现了一个让我比较气愤的技术图书相关的事件&#xff0c;事情由《JavaScript征途》一书在51JS上的贴子引起&#xff0c;有人提出这本书的样张里出现了太多错误&#xff0c;但是慢慢的由于作者&#xff08;即css8&#xff09;的“死撑”&#xff0c;“事态慢慢升…

【机器学习】基于人工鱼群算法的多元非线性函数寻优

基于人工鱼群算法的多元非线性函数寻优

媲美光纤!WiFi传输速度已可达100Gbps

当前WiFi的最高传输速率是多少&#xff1f;是11ac技术标准的三频5300Mbps&#xff1f;还是11ad的7Gbps&#xff1f;亦或是11ax的10Gbps&#xff1f;答案是100Gbps&#xff01;没错&#xff0c;这一足以媲美光纤的传输速度&#xff0c;近日在日本研究人员的努力下成为现实&#…

php sharepoint,如何使用php连接sharepoint

试试这个API在SharePoint中下载WSDL.通常位于以下位置&#xff1a;< sharepoint.url> /subsite/_vti_bin/Lists.asmx?WSDL下载API确保同时保存SoapClientAuth.php和SharePointAPI.php在PHP中// 0: include api in your php script.require_once(SharePointAPI.php);// 1…

使用微波炉的十大忌讳

一、忌超时加热&#xff1a;食品放入微波炉解冻或加热&#xff0c;若忘记取出&#xff0c;如果时间超过2小时&#xff0c;则应丢掉不要&#xff0c;以免引起食物中毒。 二、忌将普通塑料容器放入微波炉加热&#xff1a;一是热的食物会使容器变形&#xff0c;二是普通塑料会放出…

匿名黑客Anonymous实施的8次最强攻击

有 研究证明&#xff0c;Anonymous黑客团体的规模比人们的预期要大的多&#xff0c;并且正在成为全世界范围内最流行一群人。关于他们存在这一事实的新闻首先在社交媒体上 公布于众&#xff0c;上面显示了成员之一盖伊福克斯&#xff08;Guy Fawkes&#xff09;炫耀他们的面具。…

【怎样写代码】参数化类型 -- 泛型(一):泛型概述

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn togethe.

php redis set集合操作,php对redis的set(集合)操作

<?phprequire (redistest.php);/*** Class setcache*集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等&#xff0c;由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的&#xff0c;所以这些操作的时间复杂度都是0(1)。*/classsetcacheext…

ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper 【转】

许多时候我们会遇到如下场景 在写一个编辑数据的页面时&#xff0c;我们通常会写如下代码 1: <input type"text" value<%ViewData["title"] %> name"title" />由前篇我们所讲的Helper演化&#xff0c;我们思考&#xff0c;对于这种代…

最佳DevOps工具获奖者:CloudBees Jenkins平台

最新一期《IT新架构》宣布了第三届影响力奖的最终结果。这些获奖的产品和技术由我们读者、行业专家和编辑人员参与投票评选&#xff0c;并且预计将对2016年的IT运营产生显著影响。首先向所有的获胜者表示祝贺。 最佳DevOps工具 获奖者&#xff1a;CloudBees Jenkins平台 开源Je…

【怎样写代码】参数化类型 -- 泛型(二):泛型的优点

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

php 对象json中文乱码,解决php json中文乱码问题

php json中文乱码的解决办法&#xff1a;首先将类中的中文字段进行url编码&#xff1b;然后再将对象进行json编码&#xff1b;最后进行url解码即可解决乱码问题。PHP中json中文乱码问题解决问题&#xff1a;众所周知使用json_encode可以方便快捷地将对象进行json编码&#xff0…

前两天去A公司面试,面试管问的题目一下子闷了。很郁闷。重新答题。在这里分享一下...

前两天去A公司面试&#xff0c;面试管问的题目一下子闷了。很郁闷。重新答题。在这里分享一下。 1&#xff09; 问&#xff1a;请问你最近做过什么项目&#xff0c;介绍一下大致的情况&#xff1f; 答&#xff1a;做了http://www.chinatravel.net,由2个人一起开发&#xff0c;其…

数据挖掘公司D square nv 完成500万欧元B轮融资

D square nv日前完成 500 万欧元 B 轮融资&#xff0c;融资方为 Gemma Frisius Fonds, Jrgen Ingels, Limburgse Reconversie Maatschappij, Fortino Capital。 D square nv 成立于 2007年12月&#xff0c;总部位于比利时哈瑟尔特。当时由创始团队自掏腰包 13.5 万欧元作为种子…