私はリクエストを投稿していますが、応答として「成功」の文字列を受け取ることになっています。下の画像に掲載されている次の情報を含むHttpResponseErrorを取得しています。
PurchaseOrderService
postPurchaseOrderCustom(purchaseOrderCustom: PurchaseOrderSaveCustom) {
const url = `${this.localUrl}purchaseOrderCustom`;
return this.http.post<String>(url, purchaseOrderCustom, {headers: this.header})
.pipe(
catchError(this.handleError('postPurchaseOrderCustom', 'I am an error'))
);
}
PurchaseOrderComponent
this.purchaseOrderService.postPurchaseOrderCustom(purchaseOrderCustom).subscribe( response => {
console.log("Testing", response);
},
error => {
console.error('errorMsg',error );
}
私がそれをしている方法は、ドキュメントで行っている方法と同じです。私が間違っていることを指摘してください。
これは、API応答タイプに関連する、success
は有効なjson形式ではありません。デフォルトでは、HttpClient
はjson応答タイプであり、後で解析しようとします。これを解決するには、応答タイプをtextに設定します
return this.http.post<String>(url, purchaseOrderCustom,
{headers: this.header , responseType:'text'})
.pipe (catchError(this.handleError('postPurchaseOrderCustom', 'I am an error')));
既に述べたように、これはサーバーからの応答に関係しています。
私の場合、これを返すSpring Bootアプリケーションがありました。
return new ResponseEntity<>("Your SSN was generated successfully", HttpStatus.OK);
これは、Angular end:
{error: SyntaxError: Unexpected token Y in JSON at position 0
at JSON.parse (<anonymous>)
at XMLHtt…, text: "Your SSN was registered successfully."}
だから私がやったのは、Spring BootアプリケーションでカスタムCustomHttpResponse
クラスを作成してから、コントローラーのコードを次のように変更することでした。
...
CustomHttpResponse customHttpResponse = new CustomHttpResponse();
customHttpResponse.setMessage("Your SSN was registered successfully.");
customHttpResponse.setStatus(HttpStatus.OK.value());
return new ResponseEntity<>(new Gson().toJson(customHttpResponse),
HttpStatus.OK);
}
今私はこれを得ています:
{message: "Your SSN was registered successfully.", status: 200}
message: "Your SSN was registered successfully."
status: 200
基本的に、このエラーはAngularがJSONを予期しているが、代わりに何かを取得する場合に発生します