我无法使用Ionic 3从http.post响应中获取身体数据,但是使用Postman时却正在获取数据

时间:2018-09-18 06:37:26

标签: angular ionic3

在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的新手。

1 个答案:

答案 0 :(得分:1)

服务器的响应为空。

这很可能是请求问题,而不是您的代码问题。

您将需要更仔细地查看正在调用的服务器的API文档,并相应地更改请求。如果没有对该服务器的API文档以及您要调用的特定端点的公共访问权限,此站点上的任何人都不太可能为您提供针对该请求的任何修复程序。

您可能希望通过在单独的工具(例如Advanced REST Client(我个人未使用或未测试))中测试服务器API调用,从而将问题与Ionic完全隔离。

另一个小问题(尽管这不影响服务器响应)是您在res.json行中调用map。这应该是res.json()。 (此更改将导致在控制台中显示其他错误,因为您首先没有从服务器接收JSON。)