关于java请求转发的整理

本文介绍了HTTP请求中Content-Type的常见格式,并详细梳理了curl命令的各种参数及其用途,如-A, -b, -d等。接着讨论了如何在Java Spring中接收curl请求,特别是@RequestParm和@RequestBody的使用。最后,作者分享了在处理转发请求时遇到的问题,包括文件和图片的处理,以及解决方法,展示了如何通过HttpServletResponse将流数据返回给调用方。" 125350497,11514282,手把手教你实现简易Spring框架,"['Spring', 'Java', 'IoC', 'AOP', '自定义框架']
摘要由CSDN通过智能技术生成

事情的起因在于请求透传这么一个任务,我的认知中,透传需要三步,第一步知道对方的请求方式和参数传递方式,第二步是我应该怎样处理传过来的参数,第三部是透传目的接口的请求方式和参数请求方式。

首先是对于Content-Type的常见格式的认知

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml : XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json : JSON数据格式
  • application/pdf :pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

那么回过头来说说请求发起方,当前场景下是curl发起的请求,而我对于curl的参数不是很熟悉,所以整理一下以便参考

排序参数描述用法

  • A

    -A/–user-agent 指定客户端的用户代理,默认是 curl/versioncurl -A ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/76.0.3809.100 Safari/537.36’ 192.168.41.203 -v

    curl -A ‘’ 192.168.41.203

  • B

    -b/–cookie <name=data>向服务器发送 cookie(H)curl -b ‘foo1=bar;foo2=bar2’ 192.168.41.203

    curl -b cookies.txt 192.168.41.203

  • C

    -c/–cookie-jar 将服务器设置的 cookie 写入一个文件curl -c cookie.txt 192.168.41.203

    -C/–continue-at 断点续传。是一个数值,表示从文件头开始计算的要跳过的字节数。如果被设定为 -,那么将自行检测待传输文件的断点位置curl -C - -O ‘http://10.2.19.250/400k.html’ --limit-rate 10k

  • D

    -d/–data 以 POST 方式传送数据,请求头会自动加上 Content-Type:application/x-www-form-urlencoded,key=value数据应该是url转义的(H)curl -d ‘name=admin&password=123’ 192.168.41.203

    curl -H ‘Content-Type: text/xml’ -d ‘hello’ 10.2.19.250:8181/upload -v #发送 XML 数据

    curl -H ‘Content-Type: application/json’ -d ‘{“query”: “cats”}’ 10.2.19.250:8181/upload -v #发送 json 数据

    –data-urlencode将发送的数据进行 URL 编码(H)curl --data-urlencode ‘name=admin password=123’ 192.168.41.203

    –data-binary将发送的数据进行二进制编码(H)

    –data-raw无法读取文件,只能发送字符串(H)

    -D/–dump-header将响应头写入文件curl 192.168.41.203 -D test.txt

  • E

    -e/–referer设置请求头 Referer,表示请求的来源(H)curl -e ‘a.com’ 192.168.41.203 -v

    curl -e ‘’ 192.168.41.203 -v

  • F

    -F/–form <name=content>模拟用户在浏览器上“submit”的操作,请求头会自动加上 Content-Type: multipart/form-data(H)curl -F ‘file=@1.html’ ‘http://10.2.19.250:8181/upload’ -v

    curl -F ‘name=johnny’ ‘http://10.2.19.250:8181/upload’ -v #提交表单

    curl -F ‘file=@1.html;filename=11.html’ ‘http://10.2.19.250:8181/upload’ -v #修改服务器接收到的文件名为 11.html

  • G

    -g/–globoff关闭 URL 的通配符功能,允许 URL 中含有字符 {} 和[]curl -g “http://[5af0::2]” -v

    -G/–get构造 URL 的查询字符串,以 GET 方式发送数据(H)curl -G -d ‘a=1’ -d ‘b=2’ 192.168.41.203 -v

    curl -G --data-urlencode ‘id=1 or 1=2’ 192.168.41.148 -v

  • H

    -h/–help显示简要帮助手册curl -h

    H/–header

    添加 HTTP 请求头curl -H ‘Host:a.com’ 192.168.41.203 -v

  • I

    -i/–include打印响应头和网页代码curl -i 192.168.41.203

    –interface 使用指定网卡传输数据curl --interface en0 www.baidu.com -v

    -I/–head向服务器发出 HEAD 请求,打印响应头curl -I 192.168.41.203

  • K

    -k/–insecure允许连接到 SSL 站点,而不使用证书curl -k ‘https://192.168.41.205’

    -K/–config 从指定的文件中读取选项curl -K curl.options 192.168.41.203

  • L

    -L/–location跟随服务器的重定向(H)curl -L 192.168.41.148 -v

    –limit-rate 限制请求和响应的带宽,模拟慢网速的环境curl --limit-rate 100k 192.168.41.203 #将带宽限制在每秒 200K 字节(单位还有 m/g)

    curl --limit-rate 1 192.168

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值