问题表现
在 dev/pre 上通过curl命令来模拟hsf_http请求时,遇到一个问题,请求发出之后直接报下面的错误:
curl: (52) Empty reply from server
通过Google之后发现问题的本质是curl发送的请求报文超过1024以上字节时的HTTP/1.1特性,curl客户端直接放弃发起请求。
HTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是,在客户端发送 Request Message 之前,HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发来的消息主体(基于 Request Headers)。即, Client 和 Server 在 Post (较大)数据之前,允许双方“握手”,如果匹配上了,Client 才开始发送(较大)数据。
这么做的原因是,如果客户端直接发送请求数据,但是服务器又将该请求拒绝的话,这种行为将带来很大的资源开销。
协议对 HTTP/1.1 clients 的要求:
如果 client 预期等待“100-continue
”的应答,那么它发的请求必须包含一个 Expect: 100-continue
的头域!
解决方案
- 我们将参数存放到文本文件中
# 参数存放到文件中
$ cat >aa.txt
- 发起Http请求(指定参数文件和header)
$ curl --header 'Expect:' -d@aa.txt http://192.168.101.7:52433/com.xxx.api.LoanApplyService:1.0.0/loanApply
# --header 'Expect:'会去掉curl对参数长度1024的限制
# -d@aa.txt 指定使用aa.txt中的内容作为参数
666,学习了
@Just Do It,
hahha
@Just Do It, ^_^ 欢迎测试评论