我有一些参数想要以表单编码的方式 POST 到我的服务器:
{
'userName': '[email protected] /cdn-cgi/l/email-protection',
'password': 'Password!',
'grant_type': 'password'
}
我正在像这样发送我的请求(目前没有参数)
var obj = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
},
};
fetch('https://example.com/login', obj)
.then(function(res) {
// Do stuff with result
});
如何在请求中包含表单编码的参数?
您必须自己组合 x-www-form-urlencoded 有效负载,如下所示:
var details = {
'userName': '[email protected] /cdn-cgi/l/email-protection',
'password': 'Password!',
'grant_type': 'password'
};
var formBody = [];
for (var property in details) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
fetch('https://example.com/login', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: formBody
})
注意if你正在使用fetch
在(足够现代的)浏览器中,您可以创建一个而不是 React NativeURLSearchParams https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams对象并将其用作主体,因为获取标准状态 https://fetch.spec.whatwg.org/#body-mixin如果body
is a URLSearchParams
对象,那么它应该被序列化为application/x-www-form-urlencoded
。但是,你不能在 React Native 中执行此操作,因为 React Native不实施URLSearchParams https://github.com/facebook/react-native/issues/9596.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)