Ionic 3上的HTTP Post发出400错误;无法发送body参数

时间:2018-03-19 10:36:32

标签: json angular http ionic-framework ionic3

我正在尝试在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());
    });
});

API Call

Postman response

修改:Network TabHeadersResponse

编辑:使用以下库

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”但结果相同。

2 个答案:

答案 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>