离子 POST:本机 HTTP 返回 ERROR null

斯普利克



我正在尝试使用 Ionic 在 iOS 上开发一个简单的应用程序。

该应用程序包含一个简单的按钮,用于使用函数login(username, password)向位于我的服务器上的 servlet 执行 POST 请求

起初我以为是服务器端的问题,所以我尝试通过 POSTMAN 软件进行 POST。
结果是完美的,响应是一个 JSON。
但是当我尝试在我的 iPhone 上执行此操作时,原生 http 组件会抛出一个错误,其中所有值都为空。

所以我认为这与我的打字稿代码有关,你能帮我吗?

我的打字稿代码:

    import { Component } from '@angular/core';
    import { IonicPage, NavController, NavParams } from 'ionic-angular';
    import { TabsPage } from '../tabs/tabs';
    import { HTTP } from '@ionic-native/http';
    import 'rxjs/add/operator/map';
    import { Storage} from '@ionic/storage';
    import { ShareService } from '../../services/share/share';



    @IonicPage()
    @Component({
      selector: 'page-login',
      templateUrl: 'login.html',
    })
    export class LoginPage {

      static readonly SERVER_ADDRESS  = 'http://example.com';

      constructor(public navCtrl: NavController, public navParams: NavParams, private http: HTTP, private storage:Storage, private shareService: ShareService) {
        this.storage.ready().then( () => {
          this.storage.get("user").then( (user) => {
            if( user !== null){
              console.log(shareService.getUserName());
              shareService.setUser(user.firstName,user.lastName,user.username,user.customer);
              this.navCtrl.push(TabsPage);        
            }
          });
        });
      }

      ionViewDidLoad() {
        console.log('ionViewDidLoad LoginPage');
      }

      login(username,password){

        var body = {
          username: username.value,
          password: password.value
        }
        let header:any = {
          'Content-Type': 'application/json'
        }

this.http.setDataSerializer('json');   
this.http.post(LoginPage.SERVER_ADDRESS+'/external/MobileLoginServlet',body,header).then(
          data => {
            var response = JSON.parse(data.data);
            let user = response[0];
            user.customer = 3;
            user.firstname = "Christian";
            user.lastName = "Prellwitz";
            console.log(user);
            this.storage.ready().then( () =>{
               this.storage.set("user",user); 
            });
            this.navCtrl.push(TabsPage);    
          }).catch(error =>{
            console.log(error);
            console.log(error.status);
            console.log(error.error);
            console.log(error.headers);
          });

      }

    }

我的 Servlet CORS:

response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

http 组件返回的内容:

[app-scripts] [11:19:53]  console.log: [object Object]
[app-scripts] [11:19:53]  console.log: null
[app-scripts] [11:19:53]  console.log: null
[app-scripts] [11:19:53]  console.log: null


提前感谢您的帮助。

斯普利克

所以事实证明我在成功中所做的事情有问题。似乎 Ionic 原生 HTTP 组件可以捕获其中发生的每个错误。

解决方案是我改变了“让用户=响应[0];” “让用户 = response.data[0];”

无论如何,感谢您的时间和帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android HTTP Post返回null

来自分类Dev

MVC HTTP Post输入返回null

来自分类Dev

离子原生 HTTP 返回未定义

来自分类Dev

离子2 Http POST方法错误

来自分类Dev

Ajax Post返回Null

来自分类Dev

HTTP Post 请求不从离子发送正文或参数数据

来自分类Dev

离子 Http 请求

来自分类Dev

DropdownListFor在HTTP回发后返回null

来自分类Dev

DropdownListFor在HTTP回发后返回null

来自分类Dev

Geocode API 在 HTTP 响应中返回 null

来自分类Dev

ANGULAR:POST请求返回null

来自分类Dev

$ _POST内的for循环返回null

来自分类Dev

离子工厂返回空对象

来自分类Dev

反应本机vs离子2

来自分类Dev

模拟离子本机进行测试

来自分类Dev

角离子导入本机相机

来自分类Dev

离子 1 外部 HTTP 请求

来自分类Dev

http post 后视图中的角度(离子)更新表达式

来自分类Dev

Mysqli_query返回false,而Mysqli_error返回NULL?

来自分类Dev

Android Studio:UnsatisfiedLinkError:findLibrary返回null-加载本机库

来自分类Dev

HTTP POST方法返回状态码404

来自分类Dev

RXJava Retrofit返回POST HTTP错误500

来自分类Dev

执行http POST返回HTML而不是JSON

来自分类Dev

角$ http.post返回代码302

来自分类Dev

AngularJS $ http.post()返回404

来自分类Dev

AngularJS $ http.post返回状态0

来自分类Dev

$http POST 没有返回正确的响应

来自分类Dev

接收HTTP post数据并返回ok(200)

来自分类Dev

restlet post getFirstValue始终返回null