在Ionic 3中,我对http post方法的响应为空。我无法发布数据。
app.component.ts
import { Component, OnInit } from '@angular/core';
import { NavController, AlertController } from 'ionic-angular';
import { InAppBrowser } from '@ionic-native/in-app-browser';
import { Http, RequestOptions, Headers } from '@angular/http';
import 'rxjs/add/operator/map'
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage implements OnInit {
data: any = {};
constructor(public navCtrl: NavController, public http: Http) {
}
ngOnInit() {
let headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json');
var url = 'http://testing.com/api/coreapi.php';
let body = {
project_code: '1',
request_code: 'get_machine_data'
}
console.log(body);
this.http.post(url, JSON.stringify(body), { headers: headers })
.map(res => res.json)
.subscribe(data => {
console.log(body)
console.log(data); //Getting blank response in network tab
});
}
}
当我运行ionic-serve,并从控制台获取信息:
Response {_body: " ↵", status: 200, ok: true, statusText: "OK", headers: Headers, …}
当我检查“网络”标签时,它显示为空白。
我的Postman api响应是这样的
"project_url" : "http://example.com"
"response_code": "STATUS_OK"
我是Ionic的新手。
答案 0 :(得分:1)
服务器的响应为空。
这很可能是请求问题,而不是您的代码问题。
您将需要更仔细地查看正在调用的服务器的API文档,并相应地更改请求。如果没有对该服务器的API文档以及您要调用的特定端点的公共访问权限,此站点上的任何人都不太可能为您提供针对该请求的任何修复程序。
您可能希望通过在单独的工具(例如Advanced REST Client(我个人未使用或未测试))中测试服务器API调用,从而将问题与Ionic完全隔离。
另一个小问题(尽管这不影响服务器响应)是您在res.json
行中调用map
。这应该是res.json()
。 (此更改将导致在控制台中显示其他错误,因为您首先没有从服务器接收JSON。)