【发布时间】:2017-03-24 18:15:41
【问题描述】:
我正在尝试使用如下所示的 angular http post 方法发布数据。但是,每当我执行此操作时,它都会执行 get 方法。任何意见或建议将不胜感激。
login() {
let headers = new Headers();
headers.append('Content-Type','application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
let data = {
"id" : this.phoneNumber,
"uuid": '1234123412341234'
}
const body = new URLSearchParams();
Object.keys(data).forEach(key => {
body.set(key, data[key]);
})
let token = 'a%2FxMRIEsjokCR6vBkmpjh2UBeRKlVxLEiXundnAoqz0%3D';
var url = '/api/auth/login?origin=driver&access-token='+token;
this.http.post(url, body.toString(), options).subscribe( data =>{
console.log(data);
})
}
我用角度 1 编写了类似下面的代码。
$scope.login = function(){
var link = proxy_link+'api/auth/login';
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
$http({
method: 'POST',
url: link,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
params: {
'device': 'android',
},
data: {
id:$scope.data.id,
pw:$scope.data.pw,
device_token: localStorage.myPush,
uuid : localStorage.uuid,
imei: localStorage.imei
}
}).success(function(data){
// do something
}).error(function(data){
// handle error
});
};
【问题讨论】:
-
尝试直接设置RequestOptions而不是
headers..let options = new RequestOptions({ headers: headers }); this.http.post(url,body,options) -
@suraj 仍然没有运气:(
-
您正在发送get参数,将内容类型设置为urlencoded形式,然后发送json数据..
Content-Type:application/json -
我不认为
toString()是必要的.. 但应该工作 -
@suraj 它不能正常工作:(