Je fais une opération de sauvegarde qui, lorsque les données sont invalides, la réponse est un statut HTTP 400 avec les détails dans le corps JSON. Je veux lire le JSON afin que je puisse l'afficher ci-dessous est le code que je l'ai utilisé, mais rien ne semble travailler à obtenir une réponse du corps d'erreur 400Fetch, obtention d'une erreur 400 lisant le JSON
private _onSave() {
let e: EmployeeSaveEntity = this.state.employeeSave;
this._save(e, this._onResponse.bind(this) , this._onCheckError.bind(this));
}
public _save(employee: EmployeeSaveEntity, onFulfilled: any, onReject: any) {
let url: string = __URL__;
url += 'Employees';
let context: any = this;
let res: Promise<Response>;
try {
res = fetch(url,
{
//"cors" | "navigate" | "same-origin" | "no-cors"
//mode:"no-cors",
method: "POST",
headers: {
'Authorization': `Bearer ${context._authentication.token.access_token}`,
"Content-Type": "application/json"
},
body: employee.getJSON()
}).then(onFulfilled, onReject);
}
catch (error) {
throw new Error('Failed to save employee');
};
}
private _onCheckError(value: any) {
console.log('_onCheckError');
console.log(value);
}
private _onResponse(value: Response) {
console.log('_onResponse');
console.log(value);
console.log(value.text());
value.json().then(this._onJson.bind(this), this._onCheckError.bind(this));
}
private _onJson(value: any) {
console.log('_onJson');
console.log(value);
}
HTTP/1.1 400 Bad Request Cache-Control: no-cache Pragma: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=utf-8 Expires: -1 Date: Fri, 20 Oct 2017 14:50:33 GMT X-Response-From: 10.50.46.29
{"HierId":[ "You can not insert master table data into the system at this hierarchy level." ], "PrimaryPhoneNumberCountryCallingCode":[ "The PrimaryPhoneNumberCountryCallingCode is required when PrimaryPhoneNumber has a value." ] }
Vous n'êtes pas envoyer 'contenu length' dans vos têtes. Cela peut être un problème. De la RFC, "les applications DEVRAIENT utiliser ce champ pour indiquer la longueur de transfert du corps du message, à moins que cela ne soit interdit par les règles de la section 4.4." –
'application/json' ne possède pas ** de charset. –
La longueur de contenu n'est pas nécessaire, l'extraction l'ajoute à l'en-tête. Tout cela fonctionne quand les données sont correctes je reçois une réponse de 200 et tout fonctionne. Ce que je veux vraiment savoir, c'est comment lire le corps d'une mauvaise requête. – user1730289