Ich mache eine Sicherungsoperation, die, wenn die Daten ungültig sind, die 400 HTTP-Status mit den Details in der JSON-Nachricht ist. Ich mag die JSON lesen, so kann ich es unten angezeigt ist der Code Ich benutze aber nichts scheint zu bekommen eine 400-Fehler KörperreaktionAbruf, 400-Fehler beim Lesen des 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." ] }
Sie sind nicht 'Content-length' in Ihrem Header senden. Das könnte ein Problem sein. Vom RFC, "Anwendungen sollten dieses Feld verwenden, um die Übertragungslänge des Nachrichtenkörpers anzugeben, es sei denn, dies ist durch die Regeln in Abschnitt 4.4 verboten." –
'application/json' hat ** nicht ** einen charset. –
Die content-length wird nicht benötigt, der fetch fügt sie an den Header an. Das alles funktioniert, wenn die Daten stimmen, bekomme ich eine Antwort 200 und alles funktioniert. Was ich wirklich wissen möchte, ist, wie liest du den Körper einer schlechten Bitte. – user1730289