所有HTTP请求参数及报文查看SERVLET【原】
HttpRequestServlet.java
说明:
用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来.
package king.server; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.UUID; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来
* @author King
*
*/
public class HttpRequestServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
System.err.println("我是服务器,通过request.getParameter()获取的参数:");
StringBuilder paramSB = new StringBuilder();
Enumeration<?> paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
String name=(String)paramNames.nextElement();
String valueNotDecode=request.getParameter(name);
String valueDecode=new String(valueNotDecode.getBytes("UTF-8"),"UTF-8");
paramSB.append(name + "==" + valueDecode+"\n");
}
System.out.println("我是服务器,通过param读取的参数如下:\n"+paramSB.toString());
PrintWriter writer = response.getWriter();
writer.write("通过param读取的参数如下:\n"+paramSB.toString());
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
} @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 如果"您的文本内容" 用UTF-8编码后,再以conn.setRequestProperty("content-type", "text/xml;charset=iso-8859-1");发送到本服务端,那么需要对参数内容进行如下解码
// String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8");
// System.out.println("name : "+ name); System.err.println("我是服务器,通过request.getParameter()获取的参数:");
StringBuilder paramSB = new StringBuilder();
Enumeration<?> paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
String name=(String)paramNames.nextElement();
String valueNotDecode=request.getParameter(name);
String valueDecode=new String(valueNotDecode.getBytes("iso-8859-1"),"UTF-8");
System.out.println(name + "==" + valueDecode);
paramSB.append(name + "==" + valueDecode+"\n");
} //使用apache的httpcomponents 的post请求时:formparams.add(new BasicNameValuePair("key","value")); 也只能从这里获取到!
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
String line = null;
StringBuilder streamSB = new StringBuilder();
while ((line = br.readLine()) != null) {
streamSB.append(line);
}
String decode = URLDecoder.decode(streamSB.toString(), "UTF-8");
System.out.println("我是服务器,通过request.getInputStream()读取的参数:\n" + decode); response.setCharacterEncoding("UTF-8");//第一优先级高于第二优先级,只能用来设置out输出流中所采用的编码
// response.setContentType("text/html;charset=UTF-8");//第二优先级,不仅能用来设置out输出流中所采用的编码,也可以设置浏览器接收到这些字符后以什么编码方式来解码
PrintWriter writer = response.getWriter();
writer.write("通过param读取的参数如下:\n"+paramSB.toString());
writer.write("通过stream读取的参数如下:\n"+decode);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 客户端通过conn.setRequestProperty(key,value),
* 即可在服务端通过request.getHeader(key)获取到对应的head协议头值
* @param request
* @param response
* @throws Exception
*/
public void tip(HttpServletRequest request, HttpServletResponse response) throws Exception{
//在客户端用
HttpURLConnection conn = (HttpURLConnection) new URL("http://localhost:8080/httpserver").openConnection();
conn.setRequestProperty("Accept", "application/soap+xml, application/dime, multipart/related, text/*");
//就能在本服务端用
request.getHeader("Accept");//获取到Head协议头中的值.
}
}
所有HTTP请求参数及报文查看SERVLET【原】的更多相关文章
- 所有HTTP请求参数及报文查看SERVLET
HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...
- jmeter将上一个接口返回值作为下一个接口的请求参数
在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...
- 修改request请求参数
本质上来讲,request请求当中的参数是无法更改的,也不能添加或者删除: 但在后台程序中,一般对request的参数的操作,都是通过request的getParameter.getParameter ...
- Android拦截并获取WebView内部POST请求参数
起因: 有些时候自家APP中嵌入的H5页面并不是自家的.但是很多时候又想在H5不知情的情况下获取H5内部请求的参数,这应该怎么做到呢? 带着这个疑问,就有了这篇博客. 实现过程: 方案一: 最开始想到 ...
- jsp连接数据库的乱码问题 servlet请求参数编码处理get post
1.在所有需要读取数据的地方用下面的方式.同时jsp必须统一编码,如我都是UTF-8 String userName= new String(request.getParameter("us ...
- Servlet请求参数的方式
今天整理了以下几种常用的Servlet请求参数的方式,下面简单地介绍 1)getParameter(String key)返回一个字符串,获得name和key 一样的表单控件的数据,如果有重复的nam ...
- Spring MVC请求参数绑定 自定义类型转化 和获取原声带额servlet request response信息
首先还在我们的框架的基础上建立文件 在domian下建立Account实体类 import org.springframework.stereotype.Controller; import org. ...
- 4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等
1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为tr ...
- 入门servlet:request获取请求参数通用方式
一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...
随机推荐
- 【论文笔记】Domain Adaptation via Transfer Component Analysis
论文题目:<Domain Adaptation via Transfer Component Analysis> 论文作者:Sinno Jialin Pan, Ivor W. Tsang, ...
- Docker-Compose 安装
1. 什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高. Compose 是 Docker 容器进行编排的工 ...
- [cnbeta]华为值多少钱,全世界非上市公司中估值最高的巨头
华为值多少钱,全世界非上市公司中估值最高的巨头 https://www.cnbeta.com/articles/tech/808203.htm 小米.美团都曾表达过不想.不急于上市,但没人信,所以 ...
- RAID 磁盘阵列说明
Copy From wiki RAID档次 最少硬盘 最大容错 可用容量 读取性能 写入性能 安全性 目的 应用产业 单一硬盘 (引用) 0 1 1 1 无 JBOD 1 0 n 1 1 无( ...
- [转帖] iptables之四表五链
iptables之四表五链 http://www.cnblogs.com/clouders/p/6544584.html mark 学习一下 对防火墙一无所知.. iptables可谓是SA的看家本领 ...
- add (db.collection.add)添加数据
db.collection('cheshi').add({ data: { cheshi:4, } }).then((res) => { console.log(res) })
- [转]curl的详细使用
转自:http://www.cnblogs.com/gbyukg/p/3326825.html 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos ...
- appium使用错误集合
原因:没有加载该文件 解决方案: cmd 使用:adb shell uiautomator dump 在cmd生成 然后就可以获取元素了 使用send_keys()输入报错 selenium.c ...
- ubuntu16.04 NFS系统挂载
一:服务器端 step1:关闭防火墙 sudo ufw disable step2:安装nfs sudo apt-get install nfs-kernel-server step3: 打开/etc ...
- MessageBox函数第一个参数hwnd的作用
MessageBox 函数用于创建.显示并操作一个消息对话框.该对话框包含由调用程序定义的信息和标题,以及预先定义的图标和按钮. 这个方法的第一个参数hWnd,代表消息框拥有的窗口.这个参数到底有什么 ...