简单的 curl
HTTP的POST&GET请求以及ip port
连通性测试
1. 需求
我们公司有一个演示项目,需要到客户那边进行项目部署,项目部署完成后我们需要进行项目后端接口的测试功能,但是由于客户那边么有条件安装类似于postman
这种的测试工具,所以我们只能使用 LINUX curl
命令来模拟登录接口的登录测试。
2. 模拟测试过程
我们测试的登录一共有两个接口,其中一个是我们uaa-server
登录服务,使用登录服务ip
端口直接进行登录,另一个为我们使用网关接口,进行登录转发到登录系统,进行登录操作。接口支持form-data
以及json
格式参数登录,请求方式为POST
形式。
注意:我们测试环境密码校验部分已经注释,可以随意填写,所以测试密码为随机填写
具体参数如下:
- header:登录服务为信贷以及风险两个项目提供登录,使用一个
systemFlag
为系统判定参数,0 信贷 1风险 - username: 用户名
- password: 用户密码
uaa-server
以及credit-gateway
两个服务具体的请求的地址分别如下:
- uaa-server:http://10.100.3.13:11204/login
- credit-gateway:http://10.100.3.12:11200/dics/demo/login/login
2.1 postman 测试接口
我们使用postman分别进行接口测试,由于两种登录的参数相同,那么我们就使用一个接口进行postman进行测试了,我们使用网关接口进行测试:
- header 内容为 0 信贷查询
- 请求参数为 name以及password,请求类型为 form-data
- 请求返回结果如下:
- 我们使用 json 格式再次进行请求,发现可以正常请求
2.2 curl 测试接口
我们使用curl 进行测试接口,接口使用网关接口,首先我们使用 json
格式进行请求接口
curl -v -X POST http://localhost:11200/dics/sit2/login/login -H "Content-Type:application/json" "systemFlag: 0" -d "{\"password\":\"k9smtz4HKgOD47ef5SNbIQ==\",\"username\":\"331326\"}"
http://10.100.3.12:11200/dics/demo/login/login
具体的参数解释如下:
- -v:启用详细模式,显示更多调试信息。
- -X POST:指定请求方法为 POST。
- -H “Content-Type:application/json” 设置Content-Type为json格式
- -H “systemFlag: 0”:添加一个名为 systemFlag 的请求头,并将其值设置为 0。
- -d “{\“password\”:\“k9smtz4HKgOD47ef5SNbIQ==\”,\“username”:\“331326\”}” json格式的请求体
执行结果如下,成功相应token信息:
我们再使用form-data
形式请求接口,具体的请求语句如下:
curl -v -H "Content-Type: multipart/form-data" -X POST -F "username=331326" -F "password=a11111" http://10.100.3.12:11200/dics/demo/login/login --insecure
具体的参数解释跟上面解释相同,稍微不同的解释如下:
- -H “Content-Type: multipart/form-data” 使用 form-data形式访问
- -F ‘username=331326’ -F ‘password=a11111’ 具体的请求标点 form 参数
- –insecure 允许 curl 忽略 SSL 证书验证
请求结果如下所示,发现卡住了,卡在了 HTTP/1.1 100 Continue
处不动了 :
原因:当你执行 curl 命令时,如果遇到 HTTP/1.1 100 Continue
响应并卡住,这通常是由于服务器在等待客户端发送完整的请求体。100 Continue 是 HTTP/1.1 中的一种状态码,表示服务器已经收到了请求头,并且客户端应该继续发送请求体。
解决方法:尝试禁用 100 Continue 状态码的处理,使用 -H “Expect:” 参数来禁用 Expect: 100-continue 头,修改后的脚本为:
curl -v -H "Content-Type: multipart/form-data" -H "Expect:" -X POST -F "username=331326" -F "password=wcwcwcw" http://10.100.3.12:11200/dics/demo/login/login --insecure
发现脚本可以正常执行了,并且返回了需要的token信息。
3. curl ip port
连通性测试
我们测试当前机器是否与 10.100.3.12:11200
网络相同,可以使用curl 命令进行测试,具体脚本如下:
# -m 为设置超时时间10s
curl -v -m 10 --insecure http://10.100.3.12:11200/
我们在服务器上执行的结果如下:
- 如果连接成功
- 如果连接失败
4. 新增sso接口同步测试案例
sso需要用curl进行测试,简单记录一下请求案例
# GET请求
curl -X GET "http://localhost:11200/dics/sit2/login/sso/callback?ticket=ticket123&method=method123¶ms=jack"
# POST请求
curl -X POST http://localhost:11204/sso/synchronousOtherEnvToken -H "Content-Type: application/json" -d "{\"otherEnvToken\": \"test_token_123\", \"tokenDetailMapInfo\": {\"username\": \"admin\", \"role\": \"user\", \"status\": \"active\"}}"