关于beego-httpbib库的不解问题,请求大家支援

栏目: Go · 发布时间: 5年前

内容简介:使用了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 ,会是编译器问题吗?


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法导论(原书第3版)

算法导论(原书第3版)

Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein / 殷建平、徐云、王刚、刘晓光、苏明、邹恒明、王宏志 / 机械工业出版社 / 2012-12 / 128.00元

在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 全书选材经典、内容丰富、结构合理、逻辑清晰,对本科......一起来看看 《算法导论(原书第3版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具