3 votes

Angular 2 + NativeScript Réponse avec status : 200 pour URL : null

J'obtiens cette erreur lorsque j'essaie de faire un POST.

Réponse avec le statut : 200 pour l'URL : null ** {"_body":{},"status":200,"ok":true,"statusText":"","headers":{},"type":3,"url":null} **

Voici mon code

import { Injectable } from "@angular/core";
import { Http, Headers } from "@angular/http";
import "rxjs/Rx";

let LocalStorage = require( "nativescript-localstorage" );

import { User } from "../";
import { BackendService, Package, Pack, Order, Address, Reason } from "../";

@Injectable()
export class PackageService {
  public constructor(private http: Http) { }
  token : string = LocalStorage.getItem('token');
  userId : number = LocalStorage.getItem('userId');

  getPackages() {
    let headers = new Headers();
    let url = BackendService.apiUrl + BackendService.apiNameSpace + "mobile/packinglist/list";
    headers.append("Content-Type", "application/json");
    headers.append("Authorization", "Bearer " + this.token);
    this.http.post(url, {userId: this.userId}, { headers: headers})
      .map(result => JSON.parse(result.json()))
      .do(result => console.log("RESULT: ", JSON.stringify(result)))
      .subscribe(result => {
          //TODO
      }, error => {
          console.log("ERROR: ", error);
      });
  }
}

et mon packages.config

{
  "description": "FM Transportes",
  "license": "SEE LICENSE IN <your-license-filename>",
  "readme": "FM Transportes",
  "repository": "<fill-your-repository-here>",
  "nativescript": {
    "id": "org.nativescript.FMTransportes",
    "tns-android": {
      "version": "2.5.0"
    }
  },
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/router": "3.2.1",
    "email-validator": "1.0.4",
    "nativescript-angular": "1.2.0",
    "nativescript-localstorage": "^1.1.0",
    "nativescript-sqlite": "^1.1.2",
    "nativescript-telerik-ui": "^1.5.1",
    "nativescript-theme-core": "^0.2.1",
    "reflect-metadata": "~0.1.8",
    "rxjs": "5.0.0-beta.12",
    "tns-core-modules": "2.3.0"
  },
  "devDependencies": {
    "babel-traverse": "6.18.0",
    "babel-types": "6.18.0",
    "babylon": "6.13.1",
    "lazy": "1.0.11",
    "nativescript-dev-typescript": "^0.3.2",
    "typescript": "^2.0.8",
    "zone.js": "~0.6.21"
  }
}

****UPDATE**** J'ai essayé d'utiliser le composant http de nativescript pour effectuer la requête ( https://docs.nativescript.org/cookbook/http ) mais une autre erreur est survenue lors de l'analyse en JSON :

Inattendu (dans la promesse) : SyntaxError : Unxpected token � dans JSON à la position 0

J'ai consolé la réponse avant JSON.stringfy et le résultat était :

enter image description here

J'ai essayé de faire la même demande à Postman et la réponse était correcte.

EDIT J'ai essayé avec javascript XMLHttpRequest

var request = new XMLHttpRequest();
    request.open('POST', "http://api.alfatracking.com.br/homolog/api/v1/mobile/packinglist/list", true);
    request.setRequestHeader('Authorization', "Bearer ...thetoken...");
    request.setRequestHeader('Content-Type', 'application/json');
    request.send(JSON.stringify({userId: "4f235762-d0f2-e611-901e-002197e04fb6"}));

    request.onreadystatechange = () => {
      console.log("finished");
      console.log(request.readyState);
      console.log(request.responseText);
      console.log(request.responseType);

et la réponse a été la suivante : enter image description here

mais sur le navigateur web le même code fonctionne. enter image description here

0voto

mast3rd3mon Points 1642

Essayez de changer votre carte en ceci :

.map(result => result.json())

Vous devrez peut-être mapper les données un niveau plus bas, en fonction de la façon dont elles sont renvoyées :

.map(result => result.json().data)

0voto

snd Points 21

J'ai eu le même problème. J'essayais d'atteindre un webservice qui était accessible via localhost. Il semble que cela ne fonctionne pas en nativescript.

Solution : Utilisez http://0.0.0.0 au lieu de http://localhost .

0voto

Kautilya Katiha Points 21

J'étais coincé avec la même erreur. Tout ce que j'ai fait est d'utiliser le protocole sécurisé https au lieu de http

Comme mon serveur est sur Heroku, http ne fonctionnait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X