我做了一个简单的POST:
this.http.post(<config>)
.subscribe((response) => {
console.log(response)})
在Chrome浏览器网络标签中,我将其视为二进制文件。 在控制台中,我将其视为JSON。 那么真正的反应类型是什么?二进制或JSON。那时我无法保存那个二进制文件。我需要添加到请求主体吗?无论我的帖子请求是什么,为什么它在Chrome中看起来有所不同?
答案 0 :(得分:0)
为了使这一切变得简单并使响应体正确,这里是一个post请求的示例实现 - &gt;
constructor(private _http: Http) {
this.handleError = this.handleError.bind(this);
}
public PostData(data: any): Observable<any> {
//Check if you need access tokens. Usually posts need access tokens.
let access_token: string = "";
let url: string = "https://YourPostDataUrl/PostdataEndPoint";
let headers = new Headers({
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json'
});
let options = new RequestOptions({ headers: headers });
return this._http.post(url, data, options)
.map(res => res.json())
.catch(this.handleError)
}
要访问此方法,请参阅示例方法 -
saveEvent(): void{
this._serviceProvider.PostData(this.data)
.subscribe(data => {
console.log(JSON.stringify(data));
//Show Some Message. Say pop a dialog/modal confirming the data save.
})
另外,对于您在Chrome控制台上的回复 - 如评论中所述 - 通过网络和网络,内容是HTTP。但是,设置用于处理它的每种媒介 - 例如浏览器 - 都可以解释为通用格式,例如, JSON。这是n / w选项卡(前者)和浏览器控制台(后者)之间的区别。
********更新以响应未绑定的回调评论**************' 注释引用的是事件处理程序回调通常作为函数调用,而不是作为方法调用。这意味着此类回调的表达式计算为undefined或全局对象。因此,使用ES6类方法作为回调意味着该方法的表达式不引用类实例。
使用对回调事件处理程序显式绑定到 this 的构造函数的引用更新了代码。