离子本机HTTP POST方法在iOS上不起作用(但在Android上完全可以工作)

时间:2019-04-30 08:56:48

标签: ionic4 ionic-native cordova-plugin-advanced-http

我在Ionic 4项目中使用@ ionic-native / http通过通过POST方法发送带有UserId和Password的正文以及带有“ Content-Type”:“ application / json”的标头来登录用户。它可以在android上正常工作,但是在iOS上,它会显示http 400错误。

Dependencies: 

"@ionic-native/http": "^5.3.0",

"cordova-plugin-advanced-http": "^2.0.9",

我厌倦了使用@ angular / http,但在浏览器,android和iOS上却给出了CORS错误。而且我无法更改服务器端代码来启用CORS。

代码:

import { HTTP } from '@ionic-native/http/ngx';

// Login method  
async login(userId, password) {
    // login user
    const httpBody = {
      'UserId': userId,
      'Password': btoa(password)
    };
    const httpHeader = {
      'Content-Type':  'application/json',
    };
    const user = await this.http.post(this.loginURL, httpBody, httpHeader);
    return JSON.parse(user.data);
  }

状态码为200的预期结果响应

使用StatusCode 400的实际结果响应

1 个答案:

答案 0 :(得分:1)

我曾经遇到过同样的问题;就我而言,我通过 将数据序列化程序设置为'utf8',并将Content-Type标头设置为'application / x-www-form-urlencoded'

this.http.setDataSerializer('utf8');
const httpHeader = {
  'Content-Type':  'application/application/x-www-form-urlencoded'
};