基本上这个http put就像一个按钮并在系统上切换。在postman上,我可以输入URL并且它工作正常,但是当我尝试在Ionic App上实现它时,它什么都不做。 (如果代码不清楚,我们很抱歉)
以下是POSTMAN生成的HTTP代码
PUT (......) HTTP/1.1
Host: ip
Cache-Control: no-cache
Postman-Token: 0bad8e4d-e717-015a-e321-d2ee05acc563
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
任何想法我如何在Ionic Angular 4应用程序中实现?
data: any;
toggle(): Observable<Response> {
let headers = new Headers({ 'Content-Type': 'multipart/form-data' });
let options = new RequestOptions({headers: headers});
return this.http.put('http:/ip/......', JSON.stringify(this.data), options).
map((res:Response) => res.json()).catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
实际上没有任何错误,只是没有任何反应。
答案 0 :(得分:0)
如果您想进行http通话,则应订阅 Observable
,否则将不会调用
这是主要的差异b {w Promise
和Observable
toggle(): Observable<Response> {
let headers = new Headers({ 'Content-Type': 'multipart/form-data' });
let options = new RequestOptions({headers: headers});
return this.http.put('http:/ip/......', JSON.stringify(this.data), options).
map((res:Response) => res.json())
.subscribe(data => { console.log(data); }) // you are missing this line over here
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
建议注意事项:
尝试将此代码放在某些服务中,而不是放在任何组件中
return this.http.put('http:/ip/......', JSON.stringify(this.data), options). map((res:Response) => res.json()).catch((error:any) => Observable.throw(error.json().error || 'Server error'));