用Angular http发送Ionic请求

我有一个离子应用程序,我试图发送我的Stripe令牌,付款处理。 当我用curl发送请求到node服务器时,它正在接收请求。 但是,当我尝试通过Angular的http模块发送请求时,它根本没有注册。 所有这些目前正在本地进行testing,所以这可能是问题的一部分?

HTML

 <button (click)="testPost()" ion-button full>TEST POST</button> 

cart.ts

 ... import {Http, Headers, RequestOptions} from '@angular/http'; import { Stripe } from '@ionic-native/stripe'; @Component({ selector: 'page-cart', templateUrl: 'cart.html', }) export class Cart { constructor( ... private http: Http, private stripe: Stripe ) { // }); } testPost() { var headers = new Headers(); headers.append("Accept", 'application/json'); headers.append('Content-Type', 'application/json' ); let options = new RequestOptions({ headers: headers }); let postParams = { body: { token: 'axqrexample123tokenbasdflkjo3', amount: 225 } } this.http.post("http://11.1.1.7:3100/charge", postParams, options) .subscribe(data => { console.log(data['_body']); }, error => { console.log(error);// Error getting the data }); } } 

节点服务器

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var stripe = require("stripe")("sk_test_abcTAdefgn1oDexamplex"); app.use(bodyParser.json()); app.post('/charge', function (req, res) { var token = req.body.token; var amount = req.body.amount; stripe.charges.create({ amount: amount, currency: "usd", source: token, // obtained with Stripe.js description: "Charge for jones@example.com" }, function(err, charge) { // asynchronously called }); res.send('Hello World!') }); app.listen(3100, function () { console.log('Example app listening on port 3100!') }) 

我认为你需要在订阅请求之前映射请求

 this.http.post("http://11.1.1.7:3100/charge", postParams, options) .map(res => res.json()) .subscribe(data => { console.log(data['_body']); }, error => { console.log(error);// Error getting the data }); 

另外,导入rxjs

 import 'rxjs/Rx'; 

我会尝试在stripe.charges.createcallback,看看会发生什么:

 }, function(err, charge) { if (err) throw err; console.log('Charge ID:', charge.id); res.send('Hello World!'); });