我正在尝试在API(http://text-processing.com/api/sentiment/)上调用post方法,它只需要一个body参数(键:“text”)来正确响应。它在邮差上完美无瑕。我已经使用这些方法在过去成功获得了后期响应,但这些API需要原始格式的body参数。我已经尝试了传递body参数的所有方法,无论是原始格式还是JSON格式,但它总是给出400错误。
this.textHeaders = new Headers();
this.textHeaders.append("Content-Type", "application/form-data");
let bodyParam = new FormData();
bodyParam.append('text', 'I like it');
// bodyParam.append('I like it', 'text'); // This doesn't work either
this.textOptions = new RequestOptions({ headers: this.textHeaders});
this.http.post("http://text-processing.com/api/sentiment/", bodyParam, this.textOptions)
.map(res=>res.json())
.subscribe(data => {
this.textOutput = data;
console.log(this.textOutput);
}, error => {
console.error('API Error : ', error.status);
console.error('API Error : ', JSON.stringify(error));
});
let prom = new Promise((resolve, reject) => {
this.http.post('http://text-processing.com/api/sentiment/', bodyParam, this.textOptions)
.toPromise()
.then((response) =>
{
console.log('API Response : ', response.json());
resolve(response.json());
})
.catch((error) =>
{
console.error('API Error : ', error.status);
console.error('API Error : ', JSON.stringify(error));
reject(error.json());
});
});
修改:Network Tab,Headers,Response
编辑:使用以下库
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import {Validators, FormBuilder, FormGroup } from '@angular/forms';
import {Observable} from 'rxjs/Rx';
import 'rxjs/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
import { Http, Headers, RequestOptions } from '@angular/http';
尝试将“Content-Type”更改为“application / json”和“application / x-www-form-urlencoded”但结果相同。
答案 0 :(得分:0)
你得到的是400还是405?如果是400,则要将网址更改为https。
答案 1 :(得分:0)
也许多部分是一个问题。没有测试这个,但你可以尝试发送一个普通的json对象:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/excanvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.time.js"></script>
<div id="flotcontainer"></div>
<div id="flotcontainer1"></div>