使用request包的post方式提交base64格式的参数值的奇怪问题
声明参数对象
var queryData = {
"a": "1",
"b": "2",
"c": "3",
"d": {
"code_str": "/9j/4AAQSkZJRgABAg……"
}
};
以上code_str的值就是base64格式的字符串,就是一个图片。
var options = {
method: 'POST',
url: 'http://localhost:8088/api/checkcode',
form: {
'j': JSON.stringify(queryData)
},
};
然后用request(options,function(err,res,body){});
来发送请求
奇怪的问题就在于本地接收的这个请求程序(http://localhost:8088)获取不到参数j,但如果code_str参数值没有那么长,就能获取到j参数值。 求各路大神大仙指教。
5 回复
base64采用urlsafe模式, 即把’/’’+‘分别用’+’,'替换掉.
同样的参数,有时候能获取到,有时候获取不到,极其不稳定。我就怀疑是不是node.js不能一次性post这种大量的数据(其实也不大啊,就16000个字符长度),但是我使用火狐浏览器的httprequester工具,用同样的参数post到同样的地址,每次接收请求的程序就能正常获取到。
希望有同学能自己写个示例试一下,就是发请求的程序用node.js request写,post的数据就找个图片,转化成base64编码,然后再有个node.js的接收服务。可以测下看看。
把那一长串参数放在 请求路径后面?j=xxxx…… ,这样post就没有问题了
encodeURICompent(JSON.stringify(queryData))