Ionic-native HTTP POST 方法无法在 iOS 上运行(但在 Android 上运行良好)
Ionic-native HTTP POST method not working on iOS (but perfectly working on Android)
我在我的 Ionic 4 项目中使用@ionic-native/http 通过发送带有用户 ID 和密码的 body 以及带有 'Content-Type' 的 header 来登录用户:'application/json' 通过 POST 方法。它在 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);
}
StatusCode 为 200 的预期结果响应
带有 StatusCode 400 的实际结果响应
我遇到了同样的问题;在我的情况下,我修复了它
将数据序列化程序设置为 'utf8' 并将 Content-Type header 设置为 'application/x-www-form-urlencoded'
this.http.setDataSerializer('utf8');
const httpHeader = {
'Content-Type': 'application/application/x-www-form-urlencoded'
};
我在我的 Ionic 4 项目中使用@ionic-native/http 通过发送带有用户 ID 和密码的 body 以及带有 'Content-Type' 的 header 来登录用户:'application/json' 通过 POST 方法。它在 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);
}
StatusCode 为 200 的预期结果响应
带有 StatusCode 400 的实际结果响应
我遇到了同样的问题;在我的情况下,我修复了它 将数据序列化程序设置为 'utf8' 并将 Content-Type header 设置为 'application/x-www-form-urlencoded'
this.http.setDataSerializer('utf8');
const httpHeader = {
'Content-Type': 'application/application/x-www-form-urlencoded'
};