内容简介:使用了beego 的 httplib 请求库对数据进行加密处理,然后以字符串类型发送给webservice 进行请求,拿到返回数据打印出现了发送相同的请求体,不同请求结果
关于
使用了beego 的 httplib 请求库
场景
对数据进行加密处理,然后以字符串类型发送给webservice 进行请求,拿到返回数据打印
问题
出现了发送相同的请求体,不同请求结果
简略分析说明
代码如下:
// new request
req := httplib.NewBeegoRequest(host+baseUrl, method)
setHeader(req)
// 要加密的数据
_params := `{"phone":"13662676666","password":"e10adc3949ba59abbe56e057f20f883e","rememberLogin":"true"}`
// 简单加密, 拿到两个加密过的 base64字符串
crypto := Crypto{}
encText, encSeckey, _ := crypto.Encrypt(_params)
// 对数据 encode并拼接
paramsBody := "params=" + url.QueryEscape(encText) + "&encSeckey=" + encSeckey
// 拼接结果为
// "params=PaBwf0ljoojLjWSjRWn6mKPWndhYwSLDhHnEUbkSdjpXCHb6ACx08uuTXcnqjmhhvjBIeClm%2fTcqyjEiwKsIFIfnD5%2fUYCulG8c4LjzuKpwToPYSiYaMFxE6aq02CI5BEOsJklkviywLaS95l37OmXPS40Kxu7KuFMke0FyQeOXfo6JPD0Vz6qsht34Kts2F&encSecKey=2e983589cf245726cae4d87690680ec0f58b30948bd99e6698f1d9270bfd12d869c9a54e0ae8885801ab01d16c60bc39420a102907c509a9671a8338932bfd500d3d1560cb2ffaa3e308c8b962a62e1d4c0ffbaf044ca6b41ea8932ad88b1d8355c1e48984c25af6f9ef3dd2ffad216aaeb7cdf8dba533fcef099286ce98e617"
// 设置请求体
req.Body(paramsBody)
// 取结果
result, _ := req.String()
// 最终结果应该类似返回了 `{code: 200, data: "ok"}`
return result
-
理论上这是会拿到请求的结果,无论成功失败都会有 response body 回来
-
但是实际上无论怎么请求,结果都是空的,这个也许是服务器的问题,但是下面是我对结果还原的过程:
// 我将加密的结果直接打印出来,hard code 为一个变量 _paramsBody := "params=PaBwf0ljoojLjWSjRWn6mKPWndhYwSLDhHnEUbkSdjpXCHb6ACx08uuTXcnqjmhhvjBIeClm%2fTcqyjEiwKsIFIfnD5%2fUYCulG8c4LjzuKpwToPYSiYaMFxE6aq02CI5BEOsJklkviywLaS95l37OmXPS40Kxu7KuFMke0FyQeOXfo6JPD0Vz6qsht34Kts2F&encSecKey=2e983589cf245726cae4d87690680ec0f58b30948bd99e6698f1d9270bfd12d869c9a54e0ae8885801ab01d16c60bc39420a102907c509a9671a8338932bfd500d3d1560cb2ffaa3e308c8b962a62e1d4c0ffbaf044ca6b41ea8932ad88b1d8355c1e48984c25af6f9ef3dd2ffad216aaeb7cdf8dba533fcef099286ce98e617" // 设置请求体 req.Body(paramsBody) // 取结果 result, _ := req.String() // 最终返回了我要的数据 return result
直接 hard code 的数据返回了正确的结果,但是我加密之后在拼接再设置进请求体却是错的。
我再把加密出来的字符串跟 hard code 的字符串做了一次比较,代码里实现:
fmt.Println("Is Equal:", strings.EqualFold(paramsBody, _paramsBody))
// 打印结果为: Is Equal: true
这是什么情况 - -!!!
头是正常的, "Content-Type": "application/x-www-form-urlencoded",
同一个请求体,为啥结果会不一样? 尝试了很多种情况,但是实在搞不懂这是为什么,请求指教- -!
另一个费解的问题,根据 httplib 库的api,获取请求体可以用:
req.GetRequest().Body
但是,我尝试了很多次,发现很多时候,这样子获取请求体数据并打印出来,结果是空的:
{}
还有很多顺序调整的尝试,但是没有发现规律。我用的是 Golang ,会是编译器问题吗?
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 震惊,高中少年与 CDN 的不解之缘
- 集8年之大成,这本书与经典畅销书有着不解之缘
- 致我们学前端的小时光—corejs与env、runtime的不解之缘
- 支援一波 《面试数十人有感》
- gofight 支援檔案上傳測試
- iOS App 如何支援 RTL 語言
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Seasoned Schemer
Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00
drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!